在 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
的静态方法。