子类显式调用父类有参构造必须用super(参数列表)且置于构造方法首行;否则编译失败。若父类无无参构造,子类未写super()也会报错;super()与this()不可共存。

子类显式调用父类有参构造,必须使用 super(参数列表),且该语句必须写在子类构造方法的第一行。
语法要求:super() 必须是首行
Java 规定,如果子类构造器中要调用父类构造器(无论有参还是无参),super(...) 必须作为第一条可执行语句出现。否则编译报错。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 不写 super(...),且父类没有无参构造器 → 编译失败
- 写了 super(...) 但不在第一行 → 编译失败
- 同时写了 this(...) 和 super(...) → 编译失败(二者互斥)
示例:子类调用父类含参构造
假设父类 Person 有一个带两个参数的构造器:
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
子类 Student 在自己的构造器中显式调用它:
class Student extends Person {
String studentId;
public Student(String name, int age, String studentId) {
super(name, age); // ✅ 正确:第一行调用父类有参构造
this.studentId = studentId;
}
}
常见错误与提醒
- 父类若只定义了有参构造,**默认无参构造会被编译器取消**,此时子类不写 super(...) 就会报错
- 不能在普通方法里写 super(...),只能在构造器中使用
- 如果父类有多个重载的有参构造,根据参数类型和个数匹配调用对应的一个
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










