在通过类定义对象的时候,如果一个类被继承,这个类就是父类,但是但是类是可以被实例化的,如果父类也被实例化成对象,就容易造成不好的影响,所以抽象类就是可以解决这个问题:
class Aniaml {
name: string
constructor(name:string) {
this.name=name
}
sayHelly() {
console.log('hello')
}
}
let dongwu=new Aniaml('aaa')
//父类被继承,这里来看,父类叫Animal,实际不能指向一个具体的事务,所以被实例化是不合理的
class Dog extends Aniaml { //子类继承
}
let dog = new Dog('小狗')
dog.sayHelly()
可以通过**abstract**关键字定义抽象类解决避免父类被实例化
abstract class Aniaml {
name: string
constructor(name:string) {
this.name=name
}
sayHelly() {
console.log('hello')
}
}
class Dog extends Aniaml {
}
let dog = new Dog('小狗')
dog.sayHelly()
如果定义的抽象类被实例化,则会报错: