인터페이스의 장점
- 상속이 여러개 가능하기 때문에 믹스인이 가능하다.
- 계층구조가 불분명한 클래스들을 설계하기 유리하다.
- 래퍼 클래스와 함께 사용하면 인터페이스 기능을 향상 시키는 안전하고 강력한 수단이 된다.
- 구현이 명백한 것은 인터페이스의 디폴트 메서드를 사용해 프로그래머의 일감을 줄일 수 있다.
default 메서드
- 인터페이스를 상속하면 인터페이스에 정의된 모든 메서드들을 구현해야 한다. 하지만 많은 외부 클래스가 이미 이 인터페이스를 사용하고 있다면 중간에 메서드를 삽입하는 것이 쉽지 않다. 이때, default 메서드를 이용할 수 있다.
- 구현이 명백한 것, 공통된 것은 인터페이스의 디폴트 메서드를 사용해 정의함으로써 인터페이스를 상속하여 사용할 프로그래머의 일감을 줄일 수 있다.
추상 클래스
자바8 default 메서드의 등장으로 추상 클래스의 사용이 줄어들었지만, 그럼에도 불구하고 필요한 경우가 있다.
- 구현체의 필드 등을 이용해서 구현을 해야하는 경우
- 구현체의 메서드가 너무 많아 모두 정의하는 것이 힘든 경우 추상클래스를 이용하여 필요한 메서드만 재정의할 수 있다.