코드 재사용만 보고 interface default를 쓰면 protected state와 생성 순서를 표현할 수 없습니다.
abstract class
interface + default
default method
delegation 우선 검토
핵심: 다중 역할 계약은 interface, 공유 상태와 template lifecycle은 abstract class가 적합합니다.