举例子描述TypeScript中的方法重写 ?
在TypeScript中,方法重写(Method Overriding)是面向对象编程中的一个概念,允许在子类中定义一个与父类相同名称和签名的方法,以提供特定于子类的实现。这使得子类可以根据需要改变或扩展继承自父类的行为。
以下是一个简单的TypeScript示例,演示了如何在子类中重写父类的方法:
父类定义
class Animal {
move(distanceInMeters: number = 0) {
console.log(`Animal moved ${distanceInMeters}m.`);
}
}
子类重写方法
class Dog extends Animal {
// 重写父类的move方法
move(distanceInMeters: number = 5) {
console.log("Dog is running...");
super.move(distanceInMeters); // 调用父类的move方法
}
}
在这个例子中,Dog
类继承自Animal
类,并重写了Animal
类的move
方法。在Dog
类的move
方法中,首先输出一条特定于Dog
的消息,然后通过super.move(distanceInMeters)
调用父类的move
方法来复用父类的行为。
使用方法重写
let dog = new Dog();
dog.move(); // 输出: Dog is running... Animal moved 5m.
创建一个Dog
类的实例并调用它的move
方法时,会执行重写后的版本,显示Dog
类特有的行为,然后调用并显示父类Animal
的行为。
注意事项
- 方法重写允许子类改变或扩展继承自父类的行为。
- 使用
super
关键字可以调用父类的方法,这在需要保留父类行为的同时扩展功能时非常有用。 - 方法重写时,子类方法的签名应与父类方法完全匹配,包括参数类型和返回类型。
- 在TypeScript中,还可以通过接口实现多态性,这是另一种在不同类之间共享相同方法签名的方式。
方法重写是TypeScript(以及其他面向对象编程语言)中实现代码复用和行为多态性的重要特性之一。