TypeScript super关键字

2023-05-22 10:08:50 浏览数 (1)

在 TypeScript 中,super 关键字用于访问和调用父类(基类)的属性和方法。它在派生类(子类)中使用,用于扩展父类的行为或覆盖父类的方法。

访问父类的属性

在派生类中,可以使用 super 关键字来访问父类的属性。

代码语言:javascript复制
class Animal {
  name: string;

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

class Dog extends Animal {
  breed: string;

  constructor(name: string, breed: string) {
    super(name); // 调用父类的构造函数
    this.breed = breed;
  }

  introduce() {
    console.log(`My name is ${this.name}, and I'm a ${this.breed}.`);
  }
}

在上面的例子中,Dog 类使用 super(name) 来调用父类 Animal 的构造函数,从而访问和设置父类的 name 属性。

调用父类的方法

在派生类中,可以使用 super 关键字来调用父类的方法。

代码语言:javascript复制
class Animal {
  speak() {
    console.log("Animal is speaking.");
  }
}

class Dog extends Animal {
  speak() {
    super.speak(); // 调用父类的 speak 方法
    console.log("Dog is barking.");
  }
}

在上面的例子中,Dog 类的 speak 方法使用 super.speak() 来调用父类 Animalspeak 方法。

方法重写

使用 super 关键字还可以在派生类中重写父类的方法。

代码语言:javascript复制
class Animal {
  speak() {
    console.log("Animal is speaking.");
  }
}

class Dog extends Animal {
  speak() {
    super.speak(); // 调用父类的 speak 方法
    console.log("Dog is barking.");
  }
}

在上面的例子中,Dog 类重写了父类 Animalspeak 方法,并在方法中使用 super.speak() 来调用父类的方法。

访问父类的静态属性和方法

使用 super 关键字还可以访问父类的静态属性和方法。

代码语言:javascript复制
class Animal {
  static type: string = "Animal";

  static getType() {
    return Animal.type;
  }
}

class Dog extends Animal {
  static type: string = "Dog";

  static getType() {
    return super.getType(); // 调用父类的静态方法
  }
}

在上面的例子中,Dog 类的 getType 方法使用 super.getType() 来调用父类 Animal 的静态方法。

0 人点赞