[typescript] 추상 클래스를 사용하여 기본적인 기능을 제공하는 클래스 구현하기

추상 클래스는 다른 클래스에서 공통적으로 사용되는 기본적인 기능을 제공하기 위해 사용됩니다. 이번에는 TypeScipt를 사용하여 추상 클래스를 구현하는 방법에 대해 알아보겠습니다.

추상 클래스란 무엇인가요?

추상 클래스란 인스턴스를 생성할 수 없는 클래스로, 다른 클래스가 상속받아 사용하는 것을 목적으로 합니다. 추상 클래스는 실제 구현이 되어 있지 않은 추상 메서드를 포함할 수 있으며, 하위 클래스에서 이러한 추상 메서드를 구현함으로써 다양한 기능을 제공할 수 있습니다.

추상 클래스 구현하기

abstract class Shape {
  constructor(public name: string) {}

  abstract calculateArea(): number;

  display(): void {
    console.log(`${this.name}의 넓이는 ${this.calculateArea()}입니다.`);
  }
}

class Circle extends Shape {
  constructor(public name: string, public radius: number) {
    super(name);
  }

  calculateArea(): number {
    return Math.PI * this.radius * this.radius;
  }
}

class Rectangle extends Shape {
  constructor(public name: string, public width: number, public height: number) {
    super(name);
  }

  calculateArea(): number {
    return this.width * this.height;
  }
}

let circle = new Circle('', 5);
let rectangle = new Rectangle('직사각형', 4, 6);

circle.display(); // 원의 넓이는 78.53981633974483입니다.
rectangle.display(); // 직사각형의 넓이는 24입니다.

위 코드에서 Shape 클래스는 추상 클래스로, calculateArea 메서드가 추상 메서드로 선언되어 있습니다. 이를 상속받는 Circle 클래스와 Rectangle 클래스에서 각각 calculateArea 메서드를 구현하여 다양한 도형의 넓이를 계산하고 있습니다.

추상 클래스의 장점

마치며

추상 클래스를 사용하여 기본적인 기능을 제공하는 클래스를 구현하는 방법에 대해 살펴보았습니다. 추상 클래스를 올바르게 활용하면, 코드의 재사용성을 높이고 구조를 더 간결하게 유지할 수 있습니다.

참고 자료: TypeScript Handbook - Abstract Classes

이상으로 TypeScript에서 추상 클래스를 구현하는 방법을 살펴보았습니다. 추가 질문이 있으시다면 언제든지 물어보세요!