extends
부모 클래스구현 재사용
부모의 필드, 생성자 초기화, 메서드 구현을 자식이 물려받습니다.
오버라이딩
같은 메서드를 다시 정의해 자식 클래스에 맞게 동작을 바꿉니다.
super 호출
생성자와 메서드에서 부모의 초기화나 기존 동작을 이어서 씁니다.
상속은 부모 클래스의 실제 구현을 가져오고, 구현은 인터페이스가 요구하는 모양을 클래스가 채우게 합니다.
부모의 필드, 생성자 초기화, 메서드 구현을 자식이 물려받습니다.
같은 메서드를 다시 정의해 자식 클래스에 맞게 동작을 바꿉니다.
생성자와 메서드에서 부모의 초기화나 기존 동작을 이어서 씁니다.
인터페이스가 요구한 속성과 메서드를 빠짐없이 구현합니다.
인터페이스는 타입 약속만 제공하고 실제 코드는 클래스가 가집니다.
한 클래스가 여러 인터페이스를 만족해 역할 중심으로 확장됩니다.
자식이 부모의 한 종류라면 `extends`를 먼저 검토합니다.
동일한 기능 계약이 필요하면 `implements`가 더 느슨합니다.
부모 변경에 묶이면 부담이 커지므로 계약 중심 설계를 고려합니다.
코드를 물려받아 확장해야 하면 `extends`, 모양과 역할을 보장해야 하면 `implements`입니다. 둘은 함께 사용할 수 있지만 책임은 다릅니다.