JavaScript中class继承的核心是用extends声明子类并在constructor中首行调用super();子类自动继承父类的静态方法、实例方法及getter/setter,可重写方法并用super复用父逻辑,静态属性和方法也支持继承。

JavaScript 中用 class 语法写继承,核心是用 extends 关键字声明子类,并在子类构造函数中用 super() 调用父类构造逻辑——这比 ES5 的原型链手动赋值简洁、直观、不易出错。
用 extends 声明继承关系
不再需要手动设置 Child.prototype = Object.create(Parent.prototype),直接在 class 定义时用 extends 指定父类:
-
class Animal {}是基类 -
class Dog extends Animal {}表示 Dog 继承自 Animal,自动绑定原型链 - 子类会继承父类的静态方法、实例方法(包括 getter/setter)
子类构造函数必须调用 super()
如果子类定义了 constructor,就必须第一行调用 super(),否则报错。这是为了确保父类的初始化逻辑被执行,且 this 能正确指向新实例:
-
super()相当于执行父类构造函数,可传参(如super(name, age)) - 不调用
super()或调用位置不在第一行,JS 引擎会直接抛ReferenceError - 若子类没写
constructor,JS 会自动插入constructor(...args) { super(...args); }
重写方法并用 super 调用父级实现
子类可以覆盖父类同名方法,同时通过 super.methodName() 复用父类逻辑,适合扩展而非完全替换:
-
super.speak()可在子类方法中调用父类的speak方法 - 注意:只能在对象方法或构造函数中用
super,不能在普通函数或箭头函数里使用 - 静态方法中也能用
super.staticMethod(),前提是父类有对应静态方法
静态属性和方法也支持继承
ES2022 起,class 支持公有静态字段(static prop = value),它们同样遵循 extends 的继承规则:
- 子类能直接访问父类的静态属性(
Dog.species若Animal.species存在) - 子类可定义自己的静态方法,也可用
super在静态方法中调用父类静态方法 - 注意:静态属性不会被实例继承,只属于类本身及其子类
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











