在es6类继承中,子类构造器必须第一行调用super()才能访问this;即使父类无参也需super(),且super可传参或调用父类方法,但箭头函数中不可用。

在 ES6 类继承中,子类构造器必须显式调用 super() 才能访问 this。不调用会直接报错:ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor。
super() 必须在使用 this 前调用
这是硬性规则。只要子类写了自己的 constructor,就必须第一行调用 super()(或 return,但极少这么用)。否则无法初始化子类实例的内部机制。
- ✅ 正确写法:先
super(...args),再操作this - ❌ 错误写法:在
super()前读取或赋值this.xxx - ⚠️ 注意:即使父类构造器无参数,也要写
super(),不能省略括号
super() 传递参数给父类构造器
super() 的参数会原样传给父类的 constructor。子类可选择转发全部、部分,或补充额外逻辑后再传。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 转发所有参数:
super(...arguments)或super(a, b, c) - 加工后传递:
super(name.toUpperCase(), age + 1) - 父类无参也需调用:
super(),否则语法错误
super 不只用于构造器,还能调用父类方法
在实例方法中,super.xxx() 可调用父类同名方法(包括被子类重写的),常用于扩展而非覆盖。
- 例如:
super.render()在子类render中复用父类逻辑 - 注意:
super在静态方法中指向父类本身,super.method()调用的是父类静态方法 -
super是基于当前对象的原型链动态解析的,不是绑定死的父类引用
常见错误与避坑提示
实际开发中容易忽略的细节:
- 箭头函数里没有自己的
this,所以也不能用super—— 箭头函数中super会报错 - 不能在普通函数(非类方法)中用
super,它只在类的方法或构造器中有效 - 如果子类没写
constructor,JS 会自动插入一个隐式的constructor(...args) { super(...args); }
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










