[javascript] 다형성과 추상 클래스의 개념

다루게 될 주제:

  1. 다형성
  2. 추상 클래스

다형성

다형성은 객체지향 프로그래밍에서 여러 개체가 동일한 메시지(메서드)에 대해 다른 방식으로 응답하는 개념입니다.

예시

class Animal {
  makeSound() {
    console.log('Animal makes a sound');
  }
}

class Dog extends Animal {
  makeSound() {
    console.log('Dog barks');
  }
}

class Cat extends Animal {
  makeSound() {
    console.log('Cat meows');
  }
}

let dog = new Dog();
let cat = new Cat();

dog.makeSound(); // 출력: Dog barks
cat.makeSound(); // 출력: Cat meows

위 예시에서 Animal 클래스의 makeSound 메서드를 DogCat 클래스에서 재정의하여 다른 동작을 수행하는 것을 볼 수 있습니다.


추상 클래스

추상 클래스는 객체를 직접 만들기 위한 것이 아니라, 다른 클래스들이 공통적으로 가져야 할 속성과 기능을 묶어 놓은 것입니다. 추상 클래스는 직접 객체를 생성할 수 없으며, 이를 상속받은 클래스에서 구체화하여 사용합니다.

예시

class Shape {
  constructor() {
    if (new.target === Shape) {
      throw new TypeError('Cannot instantiate Shape');
    }
  }

  draw() {
    throw new Error('Method draw must be implemented');
  }
}

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

let shape = new Shape(); // TypeError: Cannot instantiate Shape
let circle = new Circle();
circle.draw(); // 출력: Drawing a circle

위 예시에서 Shape 클래스는 직접 객체를 생성할 수 없으며, Circle 클래스를 통해 draw 메서드를 구체화하여 사용하는 것을 볼 수 있습니다.


다형성과 추상 클래스는 객체지향 프로그래밍에서 중요한 개념으로, 코드의 재사용성과 유지보수를 향상시키는 데 도움을 줍니다.

참고 자료: