
추상 클래스는 타입스크립트와 같은 객체 지향 프로그래밍 언어에서 중요한 개념이다. 추상 클래스는 직접 인스턴스화할 수 없는 클래스를 말한다. 대신, 다른 클래스가 이를 상속하고 추상 클래스에 선언된 추상 메서드를 구현해야 한다. 이러한 방식은 특정 메서드를 반드시 구현하도록 강제하거나 특정 클래스가 공통의 메서드나 속성을 공유하도록 하는 데 유용하다.
추상 클래스는 abstract 키워드를 사용하여 선언된다. 그리고 추상 클래스 내에서 abstract 키워드는 메서드를 선언하는 데 사용된다. 추상 메서드는 선언만 있고 구현부는 없는 메서드이다.
다음은 추상 클래스의 사용 예:
abstract class Animal {
abstract makeSound(): void;
move(): void {
console.log("moving...");
}
}
class Dog extends Animal {
makeSound() {
console.log('Bark!');
}
}
const myDog = new Dog();
myDog.makeSound(); // 출력: Bark!
myDog.move(); // 출력: moving...
위의 예제에서 Animal은 추상 클래스이다. 이 클래스에는 makeSound라는 추상 메서드와 일반 메서드인 move가 있다. Dog 클래스는 Animal 클래스를 상속받고, makeSound 추상 메서드를 구현한다. 그러므로 Dog의 인스턴스는 makeSound와 move 메서드를 모두 호출할 수 있다. 하지만 Animal 클래스의 인스턴스를 직접 만들려고 하면 오류가 발생한다, 왜냐하면 Animal은 추상 클래스이기 때문이다.
이런 식으로 추상 클래스를 사용하면, 여러 클래스가 공유하는 공통 로직을 중복 없이 구현하고, 동시에 하위 클래스가 반드시 구현해야 하는 행동을 정의할 수 있다.