3.2.2 기본 메서드
인터페이스에 있는 어느 메서드에서든 기본(default) 구현을 작성할 수 있다. 기본 메서드에는 반드시 default 제어자를 붙여야 한다.
public interface IntSequence {
default boolean hasNext() { return true; }
// 기본적으로 시퀀스는 무한이다.
int next();
}
이 인터페이스를 구현하는 클래스는 hasNext 메서드를 오버라이드하거나 기본 구현을 상속하는 방법 중 하나를 선택할 수 있다.
Note ≣
기본 메서드 덕분에 자바 API의 Collection/AbstractCollection이나 WindowListener/WindowAdapter처럼 인터페이스와 해당 인터페이스의 메서드를 대부분 또는 모두 구현한 동반 클래스를 제공하던 고전적인 패턴에 종지부를 찍을 수 있었다. 요즘에는 인터페이스에 이런 메서드를 바로 구현한다.