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

자바스크립트에서 다형성추상 클래스는 객체 지향 프로그래밍의 중요한 개념입니다. 이 두 가지 개념은 코드를 더 모듈화하고 유지보수하기 쉽게 만들어줍니다.

다형성

다형성은 한 요소가 여러 형태를 가질 수 있는 능력을 가리킵니다.

예를 들어, 다양한 도형이 있을 때 각 도형은 getArea 메서드를 가지고 있지만 실제로 구현되는 방식은 각 도형마다 다릅니다. 이것이 다형성의 예입니다.

추상 클래스

추상 클래스는 직접적으로 인스턴스화되지 않는 클래스입니다. 대신에, 이 클래스를 상속받아 구체적인 구현을 하는 서브 클래스를 만들어야 합니다.

자바스크립트에는 추상 클래스가 내장되어 있지 않지만, 함수를 이용해 추상 클래스를 모방할 수 있습니다.

class Shape {
  constructor() {
    if (new.target === Shape) {
      throw new Error('이 클래스는 추상 클래스입니다.');
    }
  }

  getArea() {
    throw new Error('이 메서드는 서브 클래스에서 구현되어야 합니다.');
  }
}

class Circle extends Shape {
  constructor(radius) {
    super();
    this.radius = radius;
  }

  getArea() {
    return Math.PI * (this.radius ** 2);
  }
}

위의 예제에서, Shape 클래스는 추상 클래스로 만들어져서 직접적으로 인스턴스화될 수 없습니다. 대신 Circle 클래스와 같이 구체적인 도형 클래스를 만들 때 상속 받아 사용됩니다.

다형성과 추상 클래스는 코드를 효율적으로 구성하고 유지보수할 수 있도록 도와주는 중요한 개념입니다. 객체 지향 프로그래밍에서 이러한 개념을 잘 활용하면 더 모듈화된 코드를 작성할 수 있습니다.