본문 바로가기

TIL

TIL) 상속과 오버라이딩

상속에는 단일상속과 다중상속이 있습니다.

  • 단일상속은 한 자손이 한 객체만 상속을 받는 것입니다.
  • 다중상속은 한 자손이 여러 객체의 상속을 받을 수 있습니다. (C++에서는 가능합니다.)

다중상속을 대신 할 수 있는 방법은 한 객체를 상속받고 다른 객체는 포함관계를 가지면 다중상속과 같은 효과를 볼 수 있습니다.

자바에는 Object 클래스라는 부모클래스가 있습니다. Object 클래스는 한 클래스가 아무것도 상속받지 않을 때 컴파일과정에서 상속되는 부모클래스입니다.

만일 TV객체가 있고, SmartTV객체가 TV를 상속받고있다라면 상속은 다음과 같이 일어난다고 할 수 있습니다.

  • Object >> TV >> SmartTV

오버라이딩

오버라이딩이란 부모객체의 메서드를 자식객체가 자신의 필요에 맞게 기능을 변경하는 것을 뜻합니다. 오버라이딩의 조건에는 3가지가 있습니다.

  1. 선언부(메서드 이름)가 부모와 일치해야합니다.
  2. 접근 제어자(public, protected, private, defalut)가 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
  3. 예외(throws)는 조상클래스의 메서드보다 많이 선언할 수 없다.

이때 오버라이딩과 오버로딩에 차이는 다음과 같습니다. (이름만 비슷하고 관계는 없다.)

  • 오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것
  • 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것

참조변수 super

super는 this와 비슷하게 이용할 수 있습니다. 단, super는 조상의 변수를 참조할 때 이용됩니다.