더북(TheBook)

이번에는 Named 인터페이스가 getName의 디폴트 구현을 제공하지 않는다고 가정하자.


interface Named {

String getName();

}


 

Student 클래스가 Person 인터페이스로부터 디폴트 메서드를 상속할 수 있을까? 타당한 이야기일 수 있지만, 자바 설계자들은 일관성을 지지하기로 결정했다. 두 인터페이스가 어떻게 충돌하는지는 문제가 되지 않는다. 적어도 한 인터페이스에서 구현을 제공하면 컴파일러는 오류를 보고하며, 프로그래머는 반드시 모호함을 해결해야 한다.

<Note>

물론 두 인터페이스 모두 공유된 메서드에 대한 디폴트 구현을 제공하지 않으면, 자바 8 이전 상황이 되므로 충돌이 없다. 이 경우 구현 클래스는 두 가지 선택 사항이 있다. 즉, 메서드를 구현하거나 구현하지 않은 채로 둘 수 있다. 후자를 선택한 경우 클래스 자체도 추상 클래스가 된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.