[javascript] 상속과 인터페이스의 차이점

목차

  1. 상속
  2. 인터페이스
  3. 결론

1. 상속

상속은 기존 클래스에서 새 클래스를 만들 때 사용되는 중요한 개념입니다. 부모 클래스의 속성과 메서드를 자식 클래스가 상속받아 재사용할 수 있게 합니다.

상속은 클래스 간의 계층 구조를 형성하며 코드를 보다 재사용 가능하도록 만들어 줍니다. 또한, 부모 클래스의 변경이 모든 자식 클래스에 영향을 미칠 수 있습니다.

예시:

class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(`${this.name} makes a noise`);
  }
}

class Dog extends Animal {
  speak() {
    console.log(`${this.name} barks`);
  }
}

let d = new Dog('Mitzie');
d.speak(); // Output: Mitzie barks

2. 인터페이스

인터페이스는 클래스가 특정 메서드나 속성을 구현하도록 하는 계약과 같습니다. 인터페이스는 클래스가 특정 동작이나 기능을 가지도록 강제하여 일관성을 유지하고 코드의 가독성을 높이는 데 도움을 줍니다.

자바스크립트에는 명시적으로 인터페이스를 정의하는 기능은 없지만, 타입스크립트와 같은 언어에서는 인터페이스를 사용하여 클래스가 특정 형태를 준수함을 보장할 수 있습니다.

예시:

interface Shape {
  draw(): void;
}

class Circle implements Shape {
  draw() {
    console.log('Drawing a circle');
  }
}

let c = new Circle();
c.draw(); // Output: Drawing a circle

3. 결론

상속은 기존 클래스의 속성과 메서드를 재사용하고 확장하는 데 사용되며, 인터페이스는 클래스 간의 계약을 정의하여 일관성을 유지하고 코드의 가독성을 높이는 데 사용됩니다. 두 가지 개념은 각자의 고유한 용도와 장단점을 가지고 있으며, 상황에 따라 적절히 사용되어야 합니다.