자바가 제공하는 다중 구현 방식은 아래와 같이 두 가지입니다. 추상 클래스 인터페이스 Java 8+ 버전부터 인터페이스도 default method를 제공할 수 있게 되어 두 메커니즘 모두 인스턴스 메서드를 구현 형태로 제공할 수 있다는 공통점이 있습니다. 한편 이 둘의 가장 큰 차이점은 아래와 같습니다. 추상 클래스 추상 클래스가 정의한 메서드를 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 같은 타입으로 취급합니다. 자바는 단일 상속만을 지원하기 때문에, 추상 클래스를 이용한 방식은 새로운 타입을 정의하는데 큰 제약이 따릅니다. 인터페이스 반면 인터페이스에서 정의한 메서드를 모두 정의한 클래스라면 다른 어떤 클래스를 상속했든 같은 타입으로 취급합니다. 추상클래스보다 확장에 용이하기 때문..