es6类继承核心是extends建立继承关系和super正确调用:子类自动继承父类实例方法、静态方法、getter/setter及构造函数中的实例属性(需调用super);子类constructor中必须首行调用super(),且不可在super前访问this。

ES6 类用 extends 实现继承,核心就两点:明确继承关系 + 正确调用 super。它不是语法糖的堆砌,而是让“子类复用父类逻辑”这件事变得直观、安全、不易出错。
用 extends 建立继承关系
只需在子类声明时写 class Child extends Parent,就完成了继承链的建立。子类自动获得父类的:
- 所有实例方法(定义在类体中、非 static 的方法)
- 所有静态方法(用
static声明的方法) - 所有 getter/setter 访问器
- 构造函数中的实例属性(前提是子类正确调用了
super)
例如:class Bird extends Animal 表示 Bird 是 Animal 的子类,后续可直接调用 bird.walk(),哪怕 walk 只在 Animal 中定义。
super 必须在 constructor 中调用
只要子类显式写了 constructor,就必须第一行调用 super(...),否则会抛 ReferenceError。这是因为 ES6 的继承机制规定:子类的 this 是由父类构造函数“塑造”出来的,不调 super 就没有合法的 this。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 传参要匹配父类构造函数签名,比如
super(name, age) - 不能在
super()之前访问this,也不能使用return - 如果子类没写
constructor,JS 会自动补一个constructor(...args) { super(...args); }
用 super 调用父类逻辑(不止在 constructor)
super 不只是函数,它还是一个对象引用,可在不同位置发挥不同作用:
- 在
constructor中:作为函数调用,初始化父类实例(如super(name)) - 在实例方法中:作为对象使用,调用父类同名方法(如
super.toString()) - 在静态方法中:同样可用
super.staticMethod()调用父类静态方法
这样既支持扩展(添加新逻辑),也支持复用(保留父类行为),比如重写 toString 时拼接颜色:return this.color + ' ' + super.toString();
避免常见陷阱
实际编码中几个高频问题要注意:
- 不要省略
super()—— 即使子类构造函数只做日志或简单赋值,也必须先调用 - 别把
super当成普通变量 —— 它只能在派生类中使用,且仅限 constructor、方法、静态方法内部 - 注意原型链完整性 ——
instanceof仍能正确识别继承关系,child instanceof Animal返回true - 静态属性和方法默认可继承 —— 子类可直接用
Child.staticMethod(),无需额外操作
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










