아이템 20. 추상 클래스보다는 인터페이스를 우선하라

자바가 제공하는 다중 구현 메커니즘

  1. 인터페이스
  2. 추상 클래스

둘의 가장 큰 차이

  1. 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 함
  2. 자바는 단일 상속만 지원하기 때문에 추상 클래스 방식은 커다란 제약을 안고 있음
  3. 인터페이스가 선언한 건 다른 어떤 클래스를 상속했든 같은 타입으로 취급됨

인터페이스 장점

  1. 기존 클래스에도 손쉽게 새로운 인터페이스를 구현해넣을 수 있음

  2. 인터페이스는 믹스인(mixin) 정의에 안성맞춤임

  3. 인터페이스로는 계층구조가 없는 타입 프레임워크를 만들 수 있음

  4. 래퍼 클래스 관용구(아이템 18)와 함께 사용하면 인터페이스는 기능을 향상 시키는 안전하고 강력한 수단이 됨

디폴트 메서드