[아이템 20] 추상 클래스보다는 인터페이스를 우선하라
추상 클래스와 인터페이스의 공통점과 차이점에 대해서는 넘어가고 바로 본론으로 들어가도록 하자. 우선 JAVA 8 부터 인터페이스에서 Default Method 를 제공하기 때문에 추상 클래스와 같이 인스턴스 메서드를 구현한 형태로 제공할 수 있다. 기존에 "인터페이스에는 추상 메서드로만 구성되어야 한다" 에서 벗어나 완성된 메서드를 제공할 수 있다는 것이다. 둘의 가장 큰 차이는 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 한다는 점이다. 즉, 반드시 상속을 통해서만 추상 클래스 사용할 수 있다. 이 자체만으로 자바의 다중상속으로 인해 큰 제약이 생기게 된다. 이외에도 인터페이스는 믹스인 정의에 안성맞춤이고, 기존 클래스에도 손쉽게 구현할 수 있는 등 다양한 ..
개발/Effective JAVA
2021. 7. 16. 01:13
