자바스크립트 클래스의 상속과 다형성

자바스크립트는 객체 지향 프로그래밍을 지원하는 언어로, 클래스, 상속, 다형성과 같은 개념을 활용할 수 있습니다. 이번 포스트에서는 자바스크립트에서 클래스의 상속과 다형성을 구현하는 방법에 대해 알아보겠습니다.

클래스의 상속

자바스크립트에서 클래스의 상속은 extends 키워드를 사용하여 구현할 수 있습니다. 부모 클래스에서 정의된 속성과 메소드를 자식 클래스가 상속받아 사용할 수 있습니다.

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} is making a sound.`);
  }
}

class Dog extends Animal {
  constructor(name) {
    super(name);
  }
}

const dog = new Dog('Buddy');
dog.speak(); // 출력: "Buddy is making a sound."

위의 예제에서 Animal 클래스는 name 속성과 speak 메소드를 가지고 있습니다. Dog 클래스는 Animal 클래스를 상속받고, name 속성과 speak 메소드를 사용할 수 있습니다.

다형성

다형성은 한 가지 인터페이스나 추상 클래스가 다양한 방식으로 구현될 수 있는 능력을 의미합니다. 자바스크립트에서는 클래스의 다형성을 구현하기 위해 메소드 오버라이딩과 인터페이스를 활용할 수 있습니다.

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} is making a sound.`);
  }
}

class Dog extends Animal {
  constructor(name) {
    super(name);
  }
  
  speak() {
    console.log(`${this.name} is barking.`);
  }
}

class Cat extends Animal {
  constructor(name) {
    super(name);
  }
  
  speak() {
    console.log(`${this.name} is meowing.`);
  }
}

const dog = new Dog('Buddy');
const cat = new Cat('Whiskers');

dog.speak(); // 출력: "Buddy is barking."
cat.speak(); // 출력: "Whiskers is meowing."

위의 예제에서 Animal 클래스에는 speak 메소드가 있습니다. Dog 클래스와 Cat 클래스는 각각 이 메소드를 오버라이딩하여 자신만의 동작을 구현하고 있습니다. 이렇게 되면 Animal 타입의 변수에 Dog 객체 또는 Cat 객체를 할당할 수 있으며, 각 객체의 speak 메소드를 호출하면 해당 객체의 동작이 실행됩니다.

자바스크립트에서는 클래스의 상속다형성을 활용하여 객체 지향 프로그래밍을 구현할 수 있습니다. 이를 통해 코드의 재사용성과 가독성을 높이고, 유연한 프로그램을 개발할 수 있습니다.