추상 클래스보다는 인터페이스를 우선하자
2021-02-15
자바가 제공하는 다중 구현 메커니즘에는 인터페이스와 추상클래스가 있다. 자바 8부터는 인터페이스도 디폴트 메서드를 제공하기 때문에, 인터페이스도 내부에 인스턴스 메서드를 가질 수 있다. 둘의 가장 큰 차이점은 추상 클래스를 구현한 클래스는 반드시 추상클래스의 하위 클래스가 되어야 한다는 점이다. 반면에 인터페이스 경우 인터페이스가 선언한 메서드를 모두 정의하고 그 일반 규약을 잘 지킨 클래스라면 다른 어떤 클래스를 상속했든 같은 타입으로 취급된다.