[Effective Java] 추상 클래스보다는 인터페이스를 우선하라.


[Effective Java] 추상 클래스보다는 인터페이스를 우선하라.

추상 클래스보다는 인터페이스를 우선하라. 자바가 제공하는 다중 구현 메커니즘은 인터페이스, 추상 클래스이다. 이 둘의 가장 큰 차이는 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 한다는 점이다. 자바는 단일 상속만 지원하니 추상 클래스 방식은 새로운 타입을 정의하는 데 제약이 있다. 인터페이스가 선언한 메서드를 모두 정의하고 규약을 잘 지킨 클래스 면 다른 어떤 클래스를 상속했든 같은 타입으로 취급된다. 인터페이스의 장점으로는 기존 클래스에도 새로운 인터페이스를 implements 해서 구현해 넣으면 된다. 하지만 기존 클래스 위에 새로운 추상 클래스를 넣기는 어렵다. 만일 두 클래스가 같은 추상 클래스를 확장하길 원한다면, 추상 클래스는 계층 구조상 두 클래스의 공통 조상이어야 한다. 인터페이스는 믹스인 정의에 안성맞춤이다. 믹스인 이란 클래스가 구현할 수 있는 타입으로, 믹스인을 구현한 클래스에 원래의 주된 타입 외에도 특정 선택적 행...


#이펙티브자바 #자바

원문링크 : [Effective Java] 추상 클래스보다는 인터페이스를 우선하라.