자바8은 기본 구현을 포함하는 인터페이스를 정의하는 두 가지 방법을 제공한다.
- 정적 메서드(static method)
- 인터페이스 내부에 정적 메서드 사용
- 디폴트 메서드(default method)
- 인터페이스의 기본 구현을 제공할 수 있도록 디폴트 메서드 사용
즉, 자바8 에서는 메서드 구현을 포함하는 인터페이스를 정의할 수 있다. 인터페이스를 구현하는 클래스는 자동으로 인터페이스에 추가된 새로운 메서드의 디폴트 메서드를 상속받게 된다. 이렇게 하면 기존의 코드 구현을 바꾸도록 강요하지 않으면서도 인터페이스를 바꿀 수 있다.
디폴트 메서드는
다중 상속 동작
이라는 유연성을 제공하면서 프로그램 구성에도 도움을 준다.
- 특징
- 디폴트 메서드는
default
키워드로 시작한다. - 메서드 바디를 포함한다
{}
- 디폴트 메서드는
public interface Sized {
int size();
default boolean isEmpty() {
return size() == 0;
}
}
- 클래스는 한 개만 상속 받을 수 있지만, 인터페이스는 여러 개 구현할 수 있다.
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable {}