구현 재사용과 역할 보장 비교
상속은 부모 클래스의 실제 구현을 가져오고, 구현은 인터페이스가 요구하는 모양을 클래스가 채우게 합니다.
부모 클래스
1 · 구현 재사용 · 부모의 필드, 생성자 초기화, 메서드 구현을 자식이 물려받습니다. · 2 · 오버라이딩 · 같은 메서드를 다…
인터페이스
1 · 계약 충족 · 인터페이스가 요구한 속성과 메서드를 빠짐없이 구현합니다. · 2 · 구현은 직접 작성 · 인터페이스는 타입 약속만 제공하고 실제 코드는 클래스가…
명확한 is-a 관계
자식이 부모의 한 종류라면 `extends`를 먼저 검토합니다.
역할만 맞추기
동일한 기능 계약이 필요하면 `implements`가 더 느슨합니다.
변경 영향 줄이기
부모 변경에 묶이면 부담이 커지므로 계약 중심 설계를 고려합니다.
핵심경험칙 코드를 물려받아 확장해야 하면 `extends`, 모양과 역할을 보장해야 하면 `implements`입니다. 둘은 함께 사용할 수 있지만 책임은 다릅니다.