15 类与继承 🏫之继承与多态

在前一章,我们深入探讨了构造函数和属性的定义与使用,以及如何创建一个简单的类。在本章中,我们将继续更进一步,专注于继承多态的概念,这两个特性是面向对象编程的核心,能够使代码更加灵活、可复用,并易于维护。

继承

继承是指一个类可以从另一个类“派生”出新的类。这个新的类称为子类,而被继承的类称为父类(或基类)。通过继承,子类可以获取父类的属性和方法,还可以扩展或重写这些方法,形成一个更具体化的类。

示例:动物类及其子类

我们先定义一个基本的Animal类,然后创建它的子类DogCat,这两种动物将从Animal类中继承属性和方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Animal {
constructor(public name: string) {}

speak(): string {
return `${this.name} makes a noise.`;
}
}

class Dog extends Animal {
speak(): string {
return `${this.name} barks.`;
}
}

class Cat extends Animal {
speak(): string {
return `${this.name} meows.`;
}
}

const dog = new Dog("Rex");
const cat = new Cat("Whiskers");

console.log(dog.speak()); // 输出: Rex barks.
console.log(cat.speak()); // 输出: Whiskers meows.

在上面的例子中,DogCat类从Animal类继承了name属性和speak方法。DogCat各自重写了speak方法,展现了不同的行为,这一点正体现了多态的概念。

多态

多态是指不同类的对象可以通过同一个接口调用各自特有的方法。在TypeScript中,这种特性通过继承与方法重写实现。我们可以创建一个通用的方法,接受Animal类型的对象,并调用speak方法。无论传递的是Dog还是Cat对象,该方法都会表现出不同的行为。

示例:使用多态

1
2
3
4
5
6
function animalSpeak(animal: Animal): void {
console.log(animal.speak());
}

animalSpeak(dog); // 输出: Rex barks.
animalSpeak(cat); // 输出: Whiskers meows.

在这里,animalSpeak方法接受一个Animal类型的参数,并调用其speak方法。因为dogcat都是Animal的子类,所以我们能轻松实现不同的行为,而不需要在animalSpeak方法内部进行类型判断。

继承的优势

  • 代码复用:通过继承,子类可以重用父类的代码,减少重复代码。
  • 逻辑清晰:通过父类和子类的层级关系,增强代码的组织性,逻辑变得更加清晰。
  • 扩展性:可以在不修改已有代码的情况下,增加新的功能和特性。

总结

本章探讨了继承多态两个重要概念。我们通过实例学习了如何创建基类和派生类,并展示了子类如何重写父类的方法来实现多态性。继承使我们能共享代码,提升了可维护性和扩展性。

在下一章中,我们将介绍访问修饰符,以更好地控制类的属性和方法的可见性及访问权限。通过理解访问修饰符,我们可以增强类的封装性,使我们的代码更加安全、稳定。

15 类与继承 🏫之继承与多态

https://zglg.work/typescript-zero/15/

作者

AI免费学习网(郭震)

发布于

2024-09-14

更新于

2024-09-14

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论