[typescript] 상속과 구현을 통해 어떤 객체의 다형성을 구현할 수 있는가?
상속을 통한 다형성 구현
상속을 사용하여 여러 클래스가 부모 클래스의 메서드와 속성을 공유할 수 있습니다. 이를 통해 다양한 형태의 객체를 일관된 방식으로 다룰 수 있습니다.
class Animal {
makeSound() {
console.log('Some sound');
}
}
class Dog extends Animal {
makeSound() {
console.log('Bark');
}
}
class Cat extends Animal {
makeSound() {
console.log('Meow');
}
}
function petSound(animal: Animal) {
animal.makeSound();
}
petSound(new Dog()); // 출력: "Bark"
petSound(new Cat()); // 출력: "Meow"
인터페이스 구현을 통한 다형성
인터페이스를 구현함으로써 여러 클래스가 동일한 형태를 갖도록 할 수 있습니다. 이를 통해 다양한 객체가 일관된 인터페이스를 사용할 수 있습니다.
interface Shape {
area(): number;
}
class Circle implements Shape {
constructor(private radius: number) {}
area() {
return Math.PI * this.radius ** 2;
}
}
class Square implements Shape {
constructor(private sideLength: number) {}
area() {
return this.sideLength ** 2;
}
}
function calculateArea(shape: Shape) {
console.log('Area:', shape.area());
}
calculateArea(new Circle(5)); // 출력: "Area: 78.54"
calculateArea(new Square(5)); // 출력: "Area: 25"
다형성을 통해 코드의 재사용성을 높이고 유지보수를 용이하게 만들 수 있습니다.
관련 참고 자료: TypeScript Handbook - Inheritance