Abstract vs Interface
추상 클래스는 구현 공유, 인터페이스는 구조 계약에 가깝다
둘 다 구현 클래스를 제한하지만, 런타임에 남는 공통 로직이 필요한지에 따라 선택이 달라진다.
JS 런타임에 class로 남음
공통 필드, 생성자, 기본 구현 공유
타입 검사 후 JS에는 남지 않음
구조와 메서드 모양만 계약
상속 계층을 만듦
공통 상태와 template method에 적합
여러 역할 조합 가능
가벼운 능력 표현에 적합
| 상황 | 판단 |
|---|---|
| 공통 상태 필요 | abstract class |
| 여러 역할 동시 만족 | interface |
| DTO/설정 객체 | interface가 가볍다 |
핵심 런타임 구현을 공유해야 하는지, 타입 계약만 필요한지부터 판단한다.