상속, 다형성, 오버라이딩
7. 정리
- 자식 객체는 힙에 하나의 블록으로 만들어지며, 생성자는 항상 부모 → 자식 순서로 실행된다(
super()자동 삽입). - 오버라이딩은 시그니처 동일 + 접근 범위 축소 불가 + checked 예외 확장 불가 + 공변 반환 허용.
@Override는 항상 붙인다. - 인스턴스 메서드는 vtable을 통한 동적 바인딩(실제 객체 기준), 필드/static은 정적 바인딩(변수 타입 기준).
- 코드 재사용이 목적이면 상속 대신 컴포지션. 상속은 진짜 is-a 관계 + 다형성이 필요할 때만.
equals를 오버라이딩하면hashCode도 반드시. 값 객체는record로 만들어 실수를 없앤다.sealed+ switch 패턴 매칭으로 빠짐없는 분기를 컴파일러에게 맡긴다.
다음 레슨 02. 추상 클래스와 인터페이스에서는 "구현 없이 계약만 정의하는" 방법과, 상속 없이도 다형성을 얻는 인터페이스 설계를 다룬다.