MST

星途 面试题库

面试题:TypeScript 类的多态性与方法重写基础

请解释 TypeScript 中类的多态性的概念,并通过代码示例展示如何实现方法重写来体现多态性。
32.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

类的多态性概念

在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 方法,DogCat 类继承自 Animal 类并分别重写了 makeSound 方法。makeAnimalSound 函数接受 Animal 类型的参数,在调用 makeSound 方法时,根据传入对象的实际类型(DogCat),会调用相应子类重写后的 makeSound 方法,从而体现了多态性。