举例子描述TypeScript中的方法重写 ?
参考答案:
在TypeScript中,方法重写(Method Overriding)是面向对象编程中的一个概念,它允许子类重新定义从父类继承来的方法。子类中的重写方法必须具有与父类中被重写方法相同的名称、参数列表和返回类型。重写方法的目的是改变或扩展从父类继承来的行为。
下面是一个简单的例子,演示了如何在TypeScript中实现方法重写:
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
makeSound(): void {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
breed: string;
constructor(name: string, breed: string) {
super(name);
this.breed = breed;
}
// 重写 makeSound 方法
makeSound(): void {
console.log(`${this.name} (a ${this.breed} dog) barks.`);
}
}
const myDog = new Dog("Buddy", "Labrador");
myDog.makeSound(); // 输出: Buddy (a Labrador dog) barks.
在上面的例子中,我们定义了一个Animal
类和一个Dog
类,Dog
类继承自Animal
类。Animal
类有一个makeSound
方法,它打印出一个动物发出声音的通用信息。在Dog
类中,我们重写了makeSound
方法,以便打印出狗叫声的特定信息。当我们创建一个Dog
实例并调用其makeSound
方法时,会调用Dog
类中的重写方法,而不是Animal
类中的原始方法。
需要注意的是,子类在重写父类方法时,方法的访问修饰符(如public
、protected
或private
)不能比父类中被重写的方法更严格。例如,如果父类中的方法是public
的,那么子类中的重写方法也必须是public
的。此外,重写方法不能抛出比父类中被重写方法更多的异常类型。
希望这个例子能够帮助你理解TypeScript中的方法重写概念!