面试题答案
一键面试类的多态性概念
在TypeScript中,多态性是指同一个操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。对于类而言,多态性允许通过基类的引用调用子类中重写的方法,使得程序在运行时能够根据对象的实际类型来决定调用哪个子类的方法,提高代码的灵活性和可维护性。
代码示例 - 方法重写体现多态性
// 定义一个基类
class Animal {
makeSound(): void {
console.log('The animal makes a sound');
}
}
// 定义一个子类继承自Animal
class Dog extends Animal {
// 重写父类的makeSound方法
makeSound(): void {
console.log('The dog barks');
}
}
// 定义另一个子类继承自Animal
class Cat extends Animal {
// 重写父类的makeSound方法
makeSound(): void {
console.log('The cat meows');
}
}
// 定义一个函数,接受一个Animal类型的参数,并调用makeSound方法
function makeAnimalSound(animal: Animal) {
animal.makeSound();
}
// 创建不同子类的实例
const dog = new Dog();
const cat = new Cat();
// 调用函数,传入不同子类的实例,体现多态性
makeAnimalSound(dog); // 输出: The dog barks
makeAnimalSound(cat); // 输出: The cat meows
在上述代码中,Animal
类定义了 makeSound
方法,Dog
和 Cat
类继承自 Animal
类并分别重写了 makeSound
方法。makeAnimalSound
函数接受 Animal
类型的参数,在调用 makeSound
方法时,根据传入对象的实际类型(Dog
或 Cat
),会调用相应子类重写后的 makeSound
方法,从而体现了多态性。