MST

星途 面试题库

面试题:JavaScript类与构造函数的继承协同

在JavaScript中,利用类和构造函数实现一个继承体系,父类有一个公共方法和一些属性,子类继承父类并扩展一些新方法和属性。请说明在这个继承过程中,构造函数是如何被调用的,以及如何确保父类和子类的属性和方法协同工作。给出完整代码实现。
27.4万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
// 定义父类
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();  // 调用子类新增方法

在这个继承过程中:

  1. 构造函数调用:当创建子类实例时,首先会调用super(),它会调用父类的构造函数,确保父类的属性(如nameage)被正确初始化。之后,子类的构造函数继续执行,初始化子类特有的属性(如breed)。
  2. 属性和方法协同工作:子类通过super关键字访问父类的方法和属性。在子类中,既可以使用从父类继承的方法(如speak),也可以定义自己的新方法(如bark)。这样就保证了父类和子类的属性和方法能够协同工作。