-
기존 클래스에도 손쉽게 새로운 인터페이스를 구현해넣을 수 있음
- 반면, 기존 클래스 위에 새로운 추상 클래스를 끼워넣기는 어려운게 일반적임
새로 추가된 추상 클래스의 모든 자손이 이를 상속하게 되어 큰 혼란을 가져옴
-
인터페이스는 믹스인(mixin) 정의에 안성맞춤임
- Comparable 자신을 구현한 클래스의 인스턴스들끼리는 순서를 정할 수 있다고 선언하는 믹스인 인터페이스임
- 대상 타입의 주된 기능에 선택적 기능을 ‘혼합(mixed in)’한다고 해서 믹스인이라고 부름
- 추상 클래스로는 믹스인을 정의할 수 없음
-
인터페이스로는 계층구조가 없는 타입 프레임워크를 만들 수 있음
- 현실에서는 계층을 엄격히 구분하기 어려운 개념도 있기 때문
- p131 소스 참고
- 같은 구조를 클래스로 만들게 되면 가능한 조합 전부를 각각의 클래스로 정의한 고도비만같은 계층구조가 만들어짐
-
래퍼 클래스 관용구(아이템 18)와 함께 사용하면 인터페이스는 기능을 향상 시키는 안전하고 강력한 수단이 됨
- 타입을 추상 클래스로 정의해두면 해당 타입에 기능을 추가하는 방법은 상속 뿐
상속해서 만든 클래스는 래퍼 클래스보다 활용도가 떨어지고 쉽게 깨짐