说明
抽象类abstract 可以理解为是定义一种类的约束和规范,如果定义了一个抽象类,并且其他的类继承了抽象类,那么抽象类中定义的属性和方法都要在子类中实现,同时,抽象类不能直接进行实例化。
使用
下面通过代码演示一下抽象类的使用:
// 创建一个抽象类abstract class Animation {// 定义一个抽象属性abstract name: string;// 定义一个抽象方法abstract move(): void;}// 创建一个玩家类继承自抽象类class Player extends Animation {// 子类继承了抽象类就要实现抽象类中的属性和方法public name: string = '玩家';public move(): void {console.log(`${this.name}移动`);}}const p1 = new Player();p1.move();
抽象类中定义的内容作为继承了抽象类的子类都要实现,无论是属性还是方法。
注意
抽象类中也可以定义普通的属性和方法,同样会被继承和使用。

总结
抽象类和接口类似,二者都是来约束对象的,但是抽象类是站在构造函数的层面来看待问题。凡是抽象类定义的规则,子类就必须要实现。
但是不同的地方在于,接口中只能存在规范,但是抽象类中除了规范以外,还可以存在业务的代码。
