메소드 재정의
상속받은 메소드가 자식 클래스에서 사용하기 적절하지 않다고 판단할 때, 부모 메소드의 시그니처를 그대로 물려받아 동일한 메소드를 재정의할 수 있음
메소드 재정의의 규칙
- 부모 메소드와 동일한 시그니처(리턴 타입, 메소드 이름, 매개변수 리스트)를 가져야 한다.
- 접근 제한을 더 강하게 오버라이딩할 수 없다. (
public
-> private
)
- 새로운 예외(Exception)를 throws할 수 없다.
@Override 애노테이션
부모 메소드의 시그니처를 올바르게 물려받았는지 검사하고 그렇지 않을 시에 컴파일 에러를 낸다.
final 클래스와 final 메소드의 상속
final 클래스의 상속
final
클래스는 상속이 불가능하다. 부모 클래스가 될 수 없다.
final 메소드의 상속
final
메소드는 오버라이딩할 수 없다.
final
필드나 메소드의 원형으로는 사용하는데 문제 없다.
타입 변환과 다형성
- 다형성을 위해 자바는 부모 클래스로 타입 변환을 허용한다.
- 모든 자식은 부모 객체로 타입 변환할 수 있다.
- 이것을 응용하면 상위 타입에 대해 다양한 하위 타입을 적용하여 다형성을 이용할 수 있다.
자동 타입 변환
- 부모 클래스 변수 타입에 자식 클래스 변수를 할당하면 자식에서 부모로 자동으로 타입이 변환된다.