TS中的抽象类有以下几个特点:
1.定义抽象类时用 abstract 修饰。
2.抽象类中可以有普通方法,也可以有抽象方法
—— 抽象方法只能存在于抽象类中,
—— 抽象方法是用关键字 abstract 修饰的方法,其只有方法的定义没有方法体。
—— 子类继承抽象类时必须实现父类中所有的抽象方法。
3.抽象类只能被子类继承,不可以被实现(既不能 new)。
下面是举例
一、创建一个抽象类
abstract class A{
name:string;
age:number;
constructor(name:string,age:number) {
this.name = name;
this.age = age;
}
}
这里可以看到,除了用 abstract 修饰,其他地方抽象类看上去可以和普通类一样。也可以说以 abstract 开头的类是抽象类。
二、抽象类中可以有抽象方法
abstract class A{
name:string;
age:number;
constructor(name:string,age:number) {
this.name = name;
this.age = age;
}
// 可以有普通方法
say():void{
console.log('hello ~')
}
// 抽象方法只有方法的定义,没有方法体
abstract run():void;
}
—— 子类继承抽象类时,实现父类中的所有抽象方法
class B extends A{
//实现父类中的抽象方法后,不报错了
run():void{
// 代码
}
}
三、抽象类不可以实例化