跳转至

07继承和抽象类

继承

  • 继承时面向对象中的又一个特性

  • 通过继承可以将其他类中的属性和方法引入到当前类中

  • 示例:

    • ```typescript class Animal{ name: string; age: number;

      constructor(name: string, age: number){ this.name = name; this.age = age; } }

    class Dog extends Animal{

    Text Only
      bark(){
          console.log(`${this.name}在汪汪叫!`);
      }
    

    }

    const dog = new Dog('旺财', 4); dog.bark(); ```

  • 通过继承可以在不修改类的情况下完成对类的扩展

  • 重写

  • 发生继承时,如果子类中的方法会替换掉父类中的同名方法,这就称为方法的重写

  • 示例:

    • ```typescript class Animal{ name: string; age: number;

      constructor(name: string, age: number){ this.name = name; this.age = age; }

      run(){ console.log(父类中的run方法!); } }

    class Dog extends Animal{

    Text Only
      bark(){
          console.log(`${this.name}在汪汪叫!`);
      }
    
      run(){
          console.log(`子类中的run方法,会重写父类中的run方法!`);
      }
    

    }

    const dog = new Dog('旺财', 4); dog.bark(); ```

    • 在子类中可以使用super来完成对父类的引用

    ## 抽象类(abstract class)

  • 抽象类是专门用来被其他类所继承的类,它只能被其他类所继承不能用来创建实例

  • ```typescript abstract class Animal{ abstract run(): void; bark(){ console.log('动物在叫~'); } }

    class Dog extends Animals{ run(){ console.log('狗在跑~'); } } ```

  • 使用abstract开头的方法叫做抽象方法,抽象方法没有方法体只能定义在抽象类中,继承抽象类时抽象方法必须要实现