Item21, 22 - 인터페이스 구현 및 주의
Item21 - 인터페이스는 구현하는 쪽을 생각해 설계하라. 기존 인터페이스에 디폴트 메서드 구현을 추가하는 것은 위험한 일이다. 디폴트 메소드를 선언하면, 그 인터페이스를 구현한 후 디폴트 메소드를 재정의하지 않은 모든 크래스에서 디폴트 구현이 쓰이게 된다. 그렇지만 추가된 메소드가 기존 구현체들과 매끄럽게 연동되리란 보장이 없다. 자바8 이전의 클래스들은 인터페이스가 한번 정의되면 그 이후에 추가되는 메서드가 없다는 가정하에 만들어졌기 때문이다. 인터페이스를 설계할 때는 세심한 주의를 기울여야 한다. 디폴트 메서드는 기존 구현체에 런타임 오류를 일으킬 수도 있으니 기존 인터페이스에 디폴트 메소드는 꼭 필요한 경우인 경우에만 추가하자 public class SuperClass { //private!! ..
2023.12.03