前端面试题115(描述一下TypeScript中的多态(Polymorphism)是如何通过接口(Interfaces)和类(Classes)实现的?)

在这里插入图片描述
在TypeScript中,多态是一种允许你使用统一的接口来表示不同类型的对象的能力,从而使得代码更加灵活且可重用。TypeScript通过接口(Interfaces)和类(Classes)来实现多态,主要通过以下几种方式:

1. 接口(Interfaces)

接口定义了一组行为规范,不同的类可以实现相同的接口,这样就实现了行为的多态性。即使这些类在其他方面有所不同,但只要它们遵循了相同的接口规范,就可以被当作同一类型来处理。

示例代码:

// 定义一个接口
interface Animal {
  makeSound(): void;
}

// 实现Animal接口的两个类
class Dog implements Animal {
  makeSound() {
    console.log('汪汪!');
  }
}

class Cat implements Animal {
  makeSound() {
    console.log('喵喵!');
  }
}

// 函数接受Animal接口类型的参数,因此可以接受Dog或Cat实例
function playSound(animal: Animal) {
  animal.makeSound();
}

// 创建Dog和Cat实例并调用playSound函数
let myDog = new Dog();
let myCat = new Cat();

playSound(myDog); // 输出:汪汪!
playSound(myCat); // 输出:喵喵!

2. 类(Classes)与继承

TypeScript中的类支持继承,子类可以继承父类的属性和方法,同时也可以覆盖或扩展它们,这是面向对象编程中多态的另一种形式。通过将方法声明为抽象或在基类中使用虚方法,可以强制子类实现特定的行为,从而实现多态。

示例代码:

abstract class Animal {
  abstract makeSound(): void;
}

class Dog extends Animal {
  makeSound() {
    console.log('汪汪!');
  }
}

class Cat extends Animal {
  makeSound() {
    console.log('喵喵!');
  }
}

function playSound(animal: Animal) {
  animal.makeSound();
}

let myDog = new Dog();
let myCat = new Cat();

playSound(myDog); // 输出:汪汪!
playSound(myCat); // 输出:喵喵!

在这个例子中,Animal是一个抽象类,它定义了一个抽象方法makeSoundDogCat类继承自Animal并实现了makeSound方法,展示了多态性。playSound函数可以接受任何实现了Animal接口或继承自Animal类的对象,进一步体现了多态的灵活性。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS-CL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值