在 TypeScript 中,super 关键字用于访问和调用父类(基类)的属性和方法。它在派生类(子类)中使用,用于扩展父类的行为或覆盖父类的方法。
访问父类的属性
在派生类中,可以使用 super 关键字来访问父类的属性。
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 关键字来调用父类的方法。
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() 来调用父类 Animal 的 speak 方法。
方法重写
使用 super 关键字还可以在派生类中重写父类的方法。
class Animal {
speak() {
console.log("Animal is speaking.");
}
}
class Dog extends Animal {
speak() {
super.speak(); // 调用父类的 speak 方法
console.log("Dog is barking.");
}
}在上面的例子中,Dog 类重写了父类 Animal 的 speak 方法,并在方法中使用 super.speak() 来调用父类的方法。
访问父类的静态属性和方法
使用 super 关键字还可以访问父类的静态属性和方法。
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 的静态方法。


