클래스 다중 상속의 문제와 인터페이스가 안전한 이유
노트 유형: Cloze
Text
클래스 다중 상속의 문제는 {{c1::실체(상태·메서드 구현)}}를 중복해서 상속받는 것 — 대표 사례가 {{c2::다이아몬드}} 상속 문제 (D가 B·C를 상속하고 B·C가 모두 A를 상속 → D는 A를 중복 상속)
- 인터페이스의 다중 구현이 안전한 이유: 인터페이스는 실체가 없고, 실행 중 실체는 {{c3::하나}}로 결정되기 때문 — 시그니처가 겹쳐도 구현 클래스에서 하나만 구현하면 그것이 모든 추상 메서드의 구현을 겸함
Back Extra
- 단, 시그니처(이름·매개변수 목록)는 같고 반환형만 다른 두 인터페이스는 한 클래스에서 함께 구현할 방법이 없음 (중복 정의 컴파일 오류)
- 다이아몬드 상속은 C++에서 배우는 내용 — Java는 클래스 다중 상속 자체를 금지