在通过类定义对象的时候,如果一个类被继承,这个类就是父类,但是但是类是可以被实例化的,如果父类也被实例化成对象,就容易造成不好的影响,所以抽象类就是可以解决这个问题:

    1. class Aniaml {
    2. name: string
    3. constructor(name:string) {
    4. this.name=name
    5. }
    6. sayHelly() {
    7. console.log('hello')
    8. }
    9. }
    10. let dongwu=new Aniaml('aaa')
    11. //父类被继承,这里来看,父类叫Animal,实际不能指向一个具体的事务,所以被实例化是不合理的
    12. class Dog extends Aniaml { //子类继承
    13. }
    14. let dog = new Dog('小狗')
    15. dog.sayHelly()

    可以通过**abstract**关键字定义抽象类解决避免父类被实例化

    1. abstract class Aniaml {
    2. name: string
    3. constructor(name:string) {
    4. this.name=name
    5. }
    6. sayHelly() {
    7. console.log('hello')
    8. }
    9. }
    10. class Dog extends Aniaml {
    11. }
    12. let dog = new Dog('小狗')
    13. dog.sayHelly()

    如果定义的抽象类被实例化,则会报错:

    抽象类 - 图1