代码示例
// 定义一个基类
class Animal {
makeSound(): void {
console.log('This animal makes a sound');
}
}
// 定义一个继承自 Animal 的子类 Dog
class Dog extends Animal {
makeSound(): void {
console.log('Woof!');
}
}
// 定义一个继承自 Animal 的子类 Cat
class Cat extends Animal {
makeSound(): void {
console.log('Meow!');
}
}
// 测试多态性
function testSound(animal: Animal) {
animal.makeSound();
}
let dog = new Dog();
let cat = new Cat();
testSound(dog);
testSound(cat);
实际项目中的作用
- 代码复用:通过继承,子类可以复用基类的属性和方法,减少重复代码。例如在上述例子中,
Dog
和 Cat
类继承自 Animal
类,无需重复编写基类已有的通用代码。
- 可维护性:当基类的代码需要修改时,所有子类都会自动继承这些修改,使得代码的维护更加容易。例如,如果在
Animal
类中添加新的属性或方法,所有子类都能立即使用。
- 灵活性和扩展性:可以轻松添加新的子类,而无需修改现有的代码。例如,要添加一个新的动物
Bird
,只需要定义一个继承自 Animal
的 Bird
类并实现 makeSound
方法即可。
- 提高代码可读性:多态使得代码更易读,因为可以根据对象的实际类型来调用合适的方法。例如在
testSound
函数中,调用 animal.makeSound()
时,具体执行的是对应子类重写后的方法,提高了代码的清晰度和可理解性。