跳到主要内容

举例子描述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类中的原始方法。

需要注意的是,子类在重写父类方法时,方法的访问修饰符(如publicprotectedprivate)不能比父类中被重写的方法更严格。例如,如果父类中的方法是public的,那么子类中的重写方法也必须是public的。此外,重写方法不能抛出比父类中被重写方法更多的异常类型。

希望这个例子能够帮助你理解TypeScript中的方法重写概念!