extends (상속)
대표적인 상속의 형태로 부모의 메소드를 따로 구현하지 않아도 그대로 자유롭게 사용할 수 있으며 오버라이딩 할 필요가 없다.
implements (상속)
부모의 클래스를 현재 자식의 클래스 내에서 한번 재정의(@Override) 해야하며 extends와 다르게 어떤 인터페이스를 채택하면 추상화 된 메서드나 프로퍼티를 반드시 구현해야 한다.
예시
interface Person {
name: string;
think(): void;
walk(): void;
eat(): void;
}
class Child implements Person {
name: string = "Fomagran";
think(): void {
console.log("생각하기");
}
walk(): void {
console.log("걷기");
}
eat(): void {
console.log("먹기");
}
}
결론
일반클래스와 추상클래스를 상속할 때는 extends를 사용하고 interface를 상속할 때는 implements를 사용한다.