ITEM 20. 추상 클래스보다는 인터페이스를 우선하라.
둘의 가장 큰 차이는 추상 클래스가 정의한 타입(자료형)을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 한다. 반면 인터페이스가 선언한 메서드를 모두 정의하고 그 일반 규약을 잘 지킨 클래스라면 다른 어떤 클래스를 상속했든 같은 타입으로 취급한다.
추상클래스를 구현했다는 것은 추상클래스가 조상클래스라는 것인데, 이러한 구조는 클래스 계층구조에 큰 혼란을 줄 수 있다. 반대로 인터페이스는 믹스인 타입으로 주된 타입 외에도 특정한 선택적 행위를 제공한다고 선언하는 효과를 주며 유연성을 얻을 수 있다.
- 믹스인(mixin)이란 클래스가 구현할 수 있는 타입으로, 믹스인을 구현한 클래스에 원래의 '주된 타입' 외에도 특정 선택적 행위를 제공한다고 선언하는 효과를 준다.
- 예를 들어 Comparable 인터페이스는 자신을 구현한 클래스의 인스턴스들끼리 순서를 정할 수 있다고 선언하는 믹스인 인터페이스이다.
'공부방 > Effective Java' 카테고리의 다른 글
[Effective Java] 09.일반적인 프로그래밍 원칙 (0) | 2024.08.10 |
---|---|
[Effective Java] 03.모든 객체의 공통 메서드 (0) | 2024.08.10 |
[Effective Java] 02. 객체 생성과 파괴 (0) | 2024.08.10 |