[이펙티브 자바] 아이템 21. 인터페이스는 구현하는 쪽을 생각해 설계하라

June·2022년 3월 3일
0

[이펙티브자바]

목록 보기
20/72

디폴트 메서드를 선언하면, 그 인터페이스를 구현한 후 디폴트 메서드를 재정의하지 않은 모든 클래스에서 디폴트 구현이 쓰이게 된다. 모든 기존 구현체들과 매끄럽게 연동되리라는 보장은 없다. 디폴트 메서드는 구현 클래스에 대해 아무것도 모르고 무작정 삽입되는 것이다.

디폴트 메서드는 (컴파일에 성공하더라도) 기존 구현체에 런타임 오류를 일으킬 수 있다.
기존 인터페이스에 디폴트 메서드로 새 메서드를 추가하는 일은 꼭 필요한 경우가 아니면 피해야 한다.

반면 새로운 인터페이스를 만들때는 표준적인 메서드 구현을 제공하는데 아주 유용한 수단이며 인터페이스를 더 쉽게 구현해 활용해줄 수 있게 한다.

인터페이스를 설계할 때는 세심한 주의를 기울여야 하며, 인터페이스 릴리스 후에도 수정이 가능할 수도 있지만 그 가능성에 기대지마라.

0개의 댓글