JavaScript中类继承的核心是用extends声明子类并在constructor首行调用super()初始化父类this;可重写方法并用super.调用父类版本;静态方法和属性可被子类继承。

JavaScript 中用 class 语法实现继承,核心是使用 extends 关键字声明子类,并在子类构造函数中通过 super() 调用父类构造函数。
定义父类并设置可被继承的属性和方法
父类用 class 声明,通常把实例属性放在 constructor 中,共用方法写在类体里:
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
speak() {
console.log(`${this.name} 发出声音`);
}
}
用 extends 创建子类并调用 super()
子类继承父类后,必须在自己的 constructor 中第一行调用 super(),否则会报错。这一步负责初始化父类的 this:
class Dog extends Animal {
constructor(name, age, breed) {
super(name, age); // 必须!把参数传给父类构造函数
this.breed = breed; // 子类特有属性
}
bark() {
console.log(`${this.name} 汪汪叫`);
}
}
- 不写
constructor,子类会默认继承父类构造函数(隐式super(...args)) - 写了
constructor却没调用super(),会直接报ReferenceError -
super()必须在访问this之前调用
重写父类方法或调用父类同名方法
子类可以定义与父类同名的方法来覆盖(override),也可在重写时用 super.方法名() 调用父类版本:
class Cat extends Animal {
constructor(name, age, color) {
super(name, age);
this.color = color;
}
speak() {
super.speak(); // 先执行父类逻辑
console.log(`${this.name} 喵喵叫`); // 再加子类逻辑
}
}
静态方法和静态属性也能被继承
父类的 static 方法可通过子类名直接调用,子类也可定义自己的静态方法:
class Animal {
static isLiving() {
return true;
}
}
class Bird extends Animal {}
console.log(Bird.isLiving()); // true —— 静态方法被继承
- 静态方法不会被实例继承,只能通过类名调用
- 子类的
super在静态方法中也有效,比如super.isLiving()
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











