MST
星途 面试题库

面试题:TypeScript 中如何通过类实现多态性

请用 TypeScript 代码示例展示如何通过类的继承和方法重写来实现多态性,并解释这种实现方式在实际项目中的作用。
40.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

代码示例

// 定义一个基类
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); 

实际项目中的作用

  1. 代码复用:通过继承,子类可以复用基类的属性和方法,减少重复代码。例如在上述例子中,DogCat 类继承自 Animal 类,无需重复编写基类已有的通用代码。
  2. 可维护性:当基类的代码需要修改时,所有子类都会自动继承这些修改,使得代码的维护更加容易。例如,如果在 Animal 类中添加新的属性或方法,所有子类都能立即使用。
  3. 灵活性和扩展性:可以轻松添加新的子类,而无需修改现有的代码。例如,要添加一个新的动物 Bird,只需要定义一个继承自 AnimalBird 类并实现 makeSound 方法即可。
  4. 提高代码可读性:多态使得代码更易读,因为可以根据对象的实际类型来调用合适的方法。例如在 testSound 函数中,调用 animal.makeSound() 时,具体执行的是对应子类重写后的方法,提高了代码的清晰度和可理解性。