zl程序教程

您现在的位置是:首页 >  后端

当前栏目

TS之类的继承与super

继承 TS Super 之类
2023-09-11 14:19:18 时间

例子

我们先写一个例子

// 父类
class Animal{
    name:string;
    age: number;
    constructor(name:string,age:number){
        this.name = name;
        this.age = age
    }
    sayName(){
        console.log(this.name)
    }
}
// 子类
class Dog extends Animal{
    run(){
        console.log(`${this.name}run`);
    }
}
class Cat extends Animal{
    sayName(){
        console.log(`我是${this.name}`);
    }
}
const dog = new Dog("旺财",19)
const cat = new Cat("汤姆",20)
dog.sayName()
dog.run()
cat.sayName()
  • 可以将代码复制到如下网址运行 点击
  • 我们查看结果 在这里插入图片描述

extends关键字

  1. 我们使用extends关键字来进行继承,其中被继承的Animal为父类,Dog为子类
  2. 继承之后,子类会拥有父类的一切属性和方法
  3. 子类也可以自己定义一些方法,如上面例子中的run
  4. 子类也可以写与父类相同的方法,这样执行方法的时候会执行子类的方法,叫做方法重写(Cat类中重写了sayName方法)

super关键字

super用在子类中,他表示当前的父类

// 父类
class Animal{
    name:string;
    age: number;

    constructor(name:string,age:number){
        console.log("Animal");
        this.name = name;
        this.age = age
    }

    sayName(){
        console.log(this.name)
    }
}

// 子类

class Dog extends Animal{
    sex:"male"|"female";
    constructor(name:string,age:number,sex:"male"){
        super(name,age) // 如果在子类中写了构造函数,就必须调用父类的构造函数
        this.sex = sex
    }
    sayName(){
    	// 类的方法中super就表示父类
        super.sayName()
        console.log("Dog")
    }
    run(){
        console.log(`${this.name}run`);
    }
}
const dog = new Dog("旺财",19,"male")
dog.sayName()
dog.run()

在这里插入图片描述

构造函数

  • 在构造函数中super()表示父类的构造函数
  • 如果在子类中写了构造函数,就必须调用父类的构造函数

类的方法中

  • 在类的方法中super直接表示父类
  • 我们可以通过super.父类的方法调用父类的方法