java中构造方法的链式调用通过this()实现,它必须是构造方法首条可执行语句,用于调用本类其他构造方法以复用初始化逻辑,不可与super()共存,且禁止循环调用。

Java 中构造方法的链式调用,是通过 this() 语句在构造方法内部调用本类的其他构造方法来实现的。它必须是构造方法中的**第一条可执行语句**,且只能出现一次。
什么是 this() 调用?
this() 是对当前类另一个构造方法的显式调用,用于复用初始化逻辑,避免代码重复。它和 super() 类似,但 super() 调用父类构造方法,this() 调用本类其他构造方法。
注意:不能在普通方法中使用 this();也不能在同一个构造方法里同时写 this() 和 super() —— 二者互斥,因为都必须是首行。
this() 的基本用法和规则
- 必须放在构造方法的第一行,否则编译报错
- 只能调用本类中已定义的其他构造方法(参数匹配)
- 不能形成循环调用,比如 A 调 B,B 又调 A,编译会拒绝
- 如果没显式写 this() 或 super(),编译器会自动插入无参 super()
一个典型例子
假设有一个 Person 类,支持不同方式创建对象:
public class Person {
private String name;
private int age;
// 无参构造
public Person() {
this("未知", 0); // 调用三参数构造的简化版
}
// 只传姓名
public Person(String name) {
this(name, 0); // 复用两个参数的构造
}
// 姓名 + 年龄
public Person(String name, int age) {
this(name, age, "未指定"); // 调用完整构造
}
// 完整构造(真正做初始化)
public Person(String name, int age, String info) {
this.name = name;
this.age = age;
// 其他初始化逻辑...
}
}
这样所有构造最终都导向最完整的那个,逻辑集中、维护方便。
常见错误提醒
- this("abc"); 写在第二行 → 编译失败
- 在已有 super("x") 的构造里再加 this() → 编译失败
- 构造方法 A 调用 B,B 又调回 A → 编译期就报错“recursive constructor invocation”
- 参数类型/个数不匹配导致找不到对应构造 → 编译错误,提示 “constructor xxx in class xxx cannot be applied to given types”
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











