[typescript] 클래스 상속과 인터페이스 구현을 통해 어떤 기능을 추가로 구현할 수 있는가?

클래스 상속은 기존 클래스에서 모든 기능을 상속받아 새로운 클래스를 만드는 것을 의미합니다. 새로운 클래스는 부모 클래스의 속성과 메서드를 모두 상속받아 재사용할 수 있습니다. 또한, 자식 클래스에서 부모 클래스의 메서드를 오버라이딩하여 수정하거나 새로운 메서드를 추가할 수도 있습니다.

class Animal {
  sound: string;

  constructor(sound: string) {
    this.sound = sound;
  }

  makeSound() {
    console.log(this.sound);
  }
}

class Dog extends Animal {
  constructor() {
    super('Woof');
  }

  // overriding the makeSound method
  makeSound() {
    console.log('Bark! ' + this.sound);
  }

  // adding a new method
  wagTail() {
    console.log('Wagging tail');
  }
}

const dog = new Dog();
dog.makeSound(); // Output: Bark! Woof
dog.wagTail(); // Output: Wagging tail

인터페이스 구현은 클래스가 특정 인터페이스의 모든 요구 사항을 충족시키도록 하는 것입니다. 인터페이스를 사용하여 클래스가 일정한 구조를 가지고 있음을 보장하고 클래스 간에 상호작용할 수 있게 합니다. 클래스는 인터페이스에서 정의된 모든 속성과 메서드를 포함해야 합니다.

interface Printable {
  print: () => void;
}

class Document implements Printable {
  print() {
    console.log('Printing document');
  }
}

const doc = new Document();
doc.print(); // Output: Printing document

클래스 상속과 인터페이스 구현을 통해 기존 코드를 재사용하고 새로운 기능을 추가하여 코드를 확장할 수 있습니다.

참고 문헌: