说明

抽象类abstract 可以理解为是定义一种类的约束和规范,如果定义了一个抽象类,并且其他的类继承了抽象类,那么抽象类中定义的属性和方法都要在子类中实现,同时,抽象类不能直接进行实例化。

使用

下面通过代码演示一下抽象类的使用:

  1. // 创建一个抽象类
  2. abstract class Animation {
  3. // 定义一个抽象属性
  4. abstract name: string;
  5. // 定义一个抽象方法
  6. abstract move(): void;
  7. }
  8. // 创建一个玩家类继承自抽象类
  9. class Player extends Animation {
  10. // 子类继承了抽象类就要实现抽象类中的属性和方法
  11. public name: string = '玩家';
  12. public move(): void {
  13. console.log(`${this.name}移动`);
  14. }
  15. }
  16. const p1 = new Player();
  17. p1.move();

抽象类中定义的内容作为继承了抽象类的子类都要实现,无论是属性还是方法。

注意

抽象类中也可以定义普通的属性和方法,同样会被继承和使用。

image.png

总结

抽象类和接口类似,二者都是来约束对象的,但是抽象类是站在构造函数的层面来看待问题。凡是抽象类定义的规则,子类就必须要实现。

但是不同的地方在于,接口中只能存在规范,但是抽象类中除了规范以外,还可以存在业务的代码。