자바 8부터 인터페이스에도 디폴트 메서드를 제공함으로써 추상 클래스만의 이점이 줄어들었다.
추상 클래스와 인터페이스의 가장 큰 차이점은 추상 클래스는 단일 상속만 지원한다는 것에서 제한적이라는 점이다
인터페이스의 장점
기존 클래스에 손쉽게 새로운 인터페이스를 구현해 넣을 수 있다.
믹스인
정의에 알맞다.
계층구조가 없는 타입 프레임워크도 설계할 수 있다.
인터페이스의 단점
public 정적 필드를 제외한 인스턴스 필드를 가질 수 없다.
따라서 디폴트 메서드 정의에도 한계가 있다. -> 추상 골격 클래스
를 활용하여 보완
참고.
믹스인: Serializable, Comparable과 같이 특정 기능을 갖고 있다는 것을 표현하는 것
추상 골격 클래스: 미리 인터페이스의 메서드들을 구현해놓은 클래스, 이 클래스를 상속받아 기능을 추가하는 것 만으로도 인터페이스까지 구현한 효과를 받는다.
위 방법대로 동작하는 것을 템플릿 메서드 패턴이라 한다.