MST

星途 面试题库

面试题:TypeScript 中多态在接口实现里的体现

在TypeScript中,假设有一个`Shape`接口,包含`draw`方法。有`Circle`和`Rectangle`类实现了`Shape`接口。请编写代码示例展示这种多态的实现,并解释为什么这体现了多态性。
31.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 定义Shape接口
interface Shape {
    draw(): void;
}

// Circle类实现Shape接口
class Circle implements Shape {
    draw(): void {
        console.log('绘制圆形');
    }
}

// Rectangle类实现Shape接口
class Rectangle implements Shape {
    draw(): void {
        console.log('绘制矩形');
    }
}

// 多态性展示
function drawShapes(shapes: Shape[]) {
    shapes.forEach(shape => {
        shape.draw();
    });
}

// 创建Shape数组并添加Circle和Rectangle实例
const shapes: Shape[] = [new Circle(), new Rectangle()];
// 调用drawShapes函数
drawShapes(shapes);

多态性解释

  1. 多态的体现:在上述代码中,drawShapes函数接收一个Shape类型的数组。虽然数组中实际存储的是CircleRectangle类的实例,但由于这两个类都实现了Shape接口,它们都拥有draw方法。当drawShapes函数遍历这个数组并调用每个元素的draw方法时,会根据实际对象的类型(CircleRectangle)调用对应的draw方法实现。
  2. 好处:这种方式提高了代码的可维护性和扩展性。如果后续添加新的实现了Shape接口的类(比如Triangle),只需要创建新类并实现draw方法,然后将其添加到Shape数组中,drawShapes函数无需修改即可正确处理新类型的对象。实现了不同对象以统一方式进行操作,符合多态的概念。