面试题答案
一键面试在构造函数中
在TypeScript类继承体系中,当子类有构造函数时,必须在构造函数中首先调用super()
,以调用父类的构造函数,完成父类实例的初始化。这是因为子类实例在使用this
之前,必须先完成父类部分的初始化。
示例代码如下:
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;
}
}
let myDog = new Dog('Buddy', 'Golden Retriever');
在普通方法中
在子类的普通方法中,super
用于调用父类中被重写的方法。这允许在子类方法内复用父类方法的逻辑,同时添加额外的自定义逻辑。
示例代码如下:
class Animal {
speak() {
return 'I am an animal';
}
}
class Dog extends Animal {
speak() {
let superSpeak = super.speak();
return superSpeak + ' and I am a dog';
}
}
let myDog = new Dog();
console.log(myDog.speak());