Abstract vs Interface

추상 클래스는 기본 구현을 담고, 인터페이스는 형태 약속에 집중한다

둘 다 구현 클래스의 구조를 제한하지만, 코드 재사용과 다중 구현 가능성에서 선택 기준이 달라진다.

선택 기준 비교

type design

추상 클래스

공통 메서드 구현과 강제 메서드 선언을 함께 둘 수 있다.

인터페이스

객체가 가져야 할 속성과 메서드 형태만 선언한다.

재사용 필요

공통 상태나 기본 동작이 있으면 추상 클래스가 어울린다.

유연한 계약

여러 구조를 동시에 만족해야 하면 인터페이스가 가볍다.

contractreuseextendimplement
읽는 법

선택의 핵심은 구현을 공유할 것인가다. 구현이 필요하면 추상 클래스, 형태 약속만 필요하면 인터페이스로 보면 된다.