Abstract vs Interface

추상 클래스는 구현 공유, 인터페이스는 구조 계약에 가깝다

둘 다 구현 클래스를 제한하지만, 런타임에 남는 공통 로직이 필요한지에 따라 선택이 달라진다.

abstract class
JS 런타임에 class로 남음
공통 필드, 생성자, 기본 구현 공유
interface
타입 검사 후 JS에는 남지 않음
구조와 메서드 모양만 계약
extends
상속 계층을 만듦
공통 상태와 template method에 적합
implements
여러 역할 조합 가능
가벼운 능력 표현에 적합
상황판단
공통 상태 필요abstract class
여러 역할 동시 만족interface
DTO/설정 객체interface가 가볍다

핵심 런타임 구현을 공유해야 하는지, 타입 계약만 필요한지부터 판단한다.