[typescript] 자식 클래스는 여러 개의 부모 클래스를 상속받을 수 있는가?
이러한 제한으로 인해 클래스는 여러 개의 인터페이스를 구현할 수 있지만, 여러 클래스에서 상속을 받을 수는 없다. 일반적으로 이러한 제한으로 인해 다중 상속 대신에 믹스인(mixin)이나 인터페이스를 사용하여 유사한 동작을 구현하는 경우가 많다.
아래의 간단한 예시를 통해 설명해보겠다.
class Animal {
move() {
console.log('Moving...');
}
}
class CanSwim {
swim() {
console.log('Swimming...');
}
}
class CanFly {
fly() {
console.log('Flying...');
}
}
// 하나의 클래스는 여러 개의 인터페이스를 구현할 수 있음
class Duck implements CanSwim, CanFly {
swim() {
console.log('Duck swimming...');
}
fly() {
console.log('Duck flying...');
}
}
const duck = new Duck();
duck.swim(); // 출력: Duck swimming...
duck.fly(); // 출력: Duck flying...
위의 예시에서 Duck
클래스는 CanSwim
과 CanFly
라는 두 개의 인터페이스를 구현하여 수영(swim)과 날기(fly) 동작을 모두 가지고 있다. 하지만 Duck
클래스가 Animal
, CanSwim
, CanFly
클래스를 동시에 상속받는 것은 불가능하다.
따라서 타입스크립트에서는 클래스가 한 번에 여러 부모 클래스를 상속받는 것이 불가능하고, 단일 상속(single inheritance)만을 지원한다.