Abstract Class or Interface

추상화 도구 선택 체크

두 도구는 모두 계약을 만들지만, 상태와 기본 구현을 어디에 둘지에 따라 선택이 달라집니다.

추상 클래스

base

공통 상태, 기본 메서드, 보호된 헬퍼를 제공하면서 일부 동작만 자식에게 맡길 때 적합합니다.

인터페이스

contract

구현 없이 형태와 역할만 강제하고, 여러 역할을 동시에 조합해야 할 때 적합합니다.

상태

공유 필드가 필요한가

구현

기본 로직을 제공할까

역할

다중 구현이 필요한가

테스트

대체 구현이 쉬운가