1.以abstract开头的类是抽象类
2.抽象类和其他类区别不大,只是不能用来创建对象
3.抽象类中可以添加抽象方法
4.抽象方法用abstract开头,没有方法体
5.抽象方法只能定义在抽象类中,子类必须对抽象方法进行重写
abstract class Animal{
name: string;
constructor(name: string){
this.name = name;
}
// 定义一个抽象方法
abstract sayHello(): void;
}
// const animal = new Animal() // Error:无法创建抽象类的实例
class Cat extends Animal{
sayHello(): void { // 重写抽象类中的方法
console.log('喵喵喵');
}
}
const cat = new Cat('Tom');
cat.sayHello(); // '喵喵喵'
class Dog extends Animal {
age: number;
constructor(name: string, age: number){
super(name);
this.age = age;
}
sayHello(): void {
console.log('汪汪汪');
}
}
const dog = new Dog('大黄', 20);
console.log(dog.name, dog.age); // 大黄 20
dog.sayHello(); // 汪汪汪