[typescript] 추상 클래스와 인터페이스의 차이점
TypeScript에서 추상 클래스와 인터페이스는 유사해 보이지만, 목적과 사용 방법에는 몇 가지 중요한 차이가 있습니다.
추상 클래스
추상 클래스는 abstract
키워드를 사용하여 정의됩니다. 이 클래스는 반드시 하나 이상의 추상 메서드를 포함해야 합니다. 추상 메서드란 본문이 없는 메서드이며, 서브클래스에서 반드시 구현되어야 합니다. 또한 일반적인 메서드나 속성을 포함할 수 있습니다. 추상 클래스는 하나의 클래스만 상속할 수 있습니다.
abstract class Animal {
abstract makeSound(): void;
move(): void {
console.log("roaming the earth");
}
}
인터페이스
인터페이스는 클래스, 함수 및 다른 구조체에 타입을 지정하는 역할을 합니다. 인터페이스는 구현을 포함할 수 없으며 클래스의 기능을 정의하거나 확장할 수 없습니다. 인터페이스는 다중 상속이 가능합니다.
interface Animal {
makeSound(): void;
}
class Dog implements Animal {
makeSound() {
console.log("Woof");
}
}
결론
추상 클래스는 상속과 구현을 위한 것이며, 인터페이스는 타입 체크를 위한 것입니다. 따라서 특정한 사용 목적에 따라 적합한 것을 선택해야 합니다.
자세한 내용은 TypeScript 공식 문서를 참고하시기 바랍니다.