TS的继承、抽象类

160 阅读1分钟

TS的继承与多态、重写

 class Animal{
     name:string;
     age:number;
     constructor(name:string,age:number) {
         this.name = name;
         this.age = age;
         
     }
     bark() {
         console.log("叫声");
     }
 }
 class Dog extends Animal{// 继承实现多态
     bark() {//方法的重写
         console.log("汪汪汪");
     }
 }
 class Cat extends Animal{// 继承实现多态
     bark() {//方法的重写
         console.log("喵喵喵");
     }
 }
 const dog = new Dog("小狗",4);
 const cat = new Cat("小猫",2);
 console.log(dog);
 dog.bark();
 ​
 console.log(cat);
 cat.bark();

abstract抽象类

不能用来创建对象,专门用来被继承的类

image-20220626215635031.png

 abstract class Animals{
     name:string;
     age:number;
     constructor(name:string,age:number) {
         this.name = name;
         this.age = age;
         
     }
     bark() {
         console.log("叫声");
     }
 }
 class Dogs extends Animals{
     bark() {
         console.log("汪汪汪");
     }
 }
 const dogs = new Dogs("小狗",4);
 console.log(dogs);
 dogs.bark();

抽象方法

抽象方法只能定义在抽象类中,没有方法体

子类必须对抽象方法进行重写

image-20220626220340427.png

 abstract class Animals{
     name:string;
     age:number;
     constructor(name:string,age:number) {
         this.name = name;
         this.age = age;
         
     }
     abstract bark():void;
 }
 class Dogs extends Animals{
     bark() {
         console.log("汪汪汪");
     }
 }
 const dogs = new Dogs("小狗",4);
 console.log(dogs);
 dogs.bark();