extends는 구현을 물려받고 implements는 계약만 검사한다

두 키워드는 모두 타입 관계를 만들지만 실행 코드가 재사용되는지는 다르다.

class extends

구현 상속

부모의 필드·메서드와 prototype 관계가 런타임에 남는다

override

행동 재정의

부모 계약을 유지하며 일부 구현을 바꾼다

class implements

형태 검증

컴파일 시 인터페이스 요구를 만족하는지만 검사

composition

기능 조립

여러 역할은 객체 협력으로 결합하면 결합도가 낮다

핵심is-a 관계와 공통 구현이 분명하면 extends, 여러 구현에 같은 표면만 요구하면 implements를 쓴다.