面试题答案
一键面试// 定义父类
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
speak() {
console.log(`${this.name} makes a sound.`);
}
}
// 定义子类
class Dog extends Animal {
constructor(name, age, breed) {
// 调用父类的构造函数来初始化继承的属性
super(name, age);
this.breed = breed;
}
bark() {
console.log(`${this.name} barks.`);
}
}
// 使用示例
const myDog = new Dog('Buddy', 3, 'Golden Retriever');
myDog.speak(); // 调用父类方法
myDog.bark(); // 调用子类新增方法
在这个继承过程中:
- 构造函数调用:当创建子类实例时,首先会调用
super()
,它会调用父类的构造函数,确保父类的属性(如name
和age
)被正确初始化。之后,子类的构造函数继续执行,初始化子类特有的属性(如breed
)。 - 属性和方法协同工作:子类通过
super
关键字访问父类的方法和属性。在子类中,既可以使用从父类继承的方法(如speak
),也可以定义自己的新方法(如bark
)。这样就保证了父类和子类的属性和方法能够协同工作。