[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에서 추상 클래스를 구현하는 방법을 살펴보았습니다. 추가 질문이 있으시다면 언제든지 물어보세요!