Class Relationship

상속은 구현을 물려받고, 구현은 역할을 증명한다

extends는 부모의 상태와 메서드를 재사용하고, implements는 클래스가 특정 인터페이스 계약을 만족하게 합니다.

base

Animal

공통 속성 name과 이동 메서드 move()를 부모 클래스에 두어 하위 클래스의 중복 구현을 줄입니다.

extends

Dog

super()로 부모 초기화를 실행하고, 필요한 메서드는 오버라이딩합니다.

implements

Runnable, Trackable

서로 다른 기능 계약을 동시에 만족해 다형적인 API에 전달될 수 있습니다.

공유 구현이 있으면 부모 클래스를 두고 extends를 사용합니다.

역할 보증만 필요하면 인터페이스와 implements를 사용합니다.

둘 다 필요: 하면 단일 상속 위에 여러 인터페이스를 조합합니다.