추상 클래스
공통 메서드 구현, protected 필드, abstract method를 함께 둘 수 있다.
둘 다 구현 클래스의 구조를 제한하지만, 런타임에 남는 공통 구현이 필요한지, 선언 병합과 다중 implements가 필요한지에 따라 선택이 갈린다.
공통 메서드 구현, protected 필드, abstract method를 함께 둘 수 있다.
객체가 가져야 할 속성과 메서드 형태만 선언하고 JS 출력에는 남지 않는다.
공통 상태, 생성자 흐름, template method가 있으면 추상 클래스가 어울린다.
여러 계약을 동시에 만족하거나 외부 타입을 확장하면 interface가 가볍다.
구현과 런타임 상속이 필요하면 추상 클래스, 형태 약속과 조합 가능성이 중요하면 interface로 보면 된다.