在java构造方法中,this关键字可调用本类其他构造方法,必须位于首行且仅一次;用于复用逻辑、避免重复;不可与super()共存,且禁止循环调用或在普通方法中使用。

在 Java 构造方法中,this 关键字可以用来调用本类的其他构造方法,这叫构造方法重载调用,必须写在构造方法的第一行,且只能出现一次。
调用本类其他构造方法(构造链)
当一个类有多个构造方法时,可以用 this(...) 复用已有逻辑,避免重复代码。注意:只能调用本类的构造方法,不能调用父类(父类要用 super(...))。
- 必须是构造方法的第一条语句
- 参数类型和个数需匹配被调用的构造方法
- 不能形成循环调用(比如 A 调 B,B 又调 A)
常见写法示例
假设有一个 Person 类:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
public class Person {
private String name;
private int age;
// 主构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 仅传 name,age 默认为 0
public Person(String name) {
this(name, 0); // ✅ 调用上面的构造方法
}
// 无参构造,name 默认为 "unknown"
public Person() {
this("unknown"); // ✅ 间接调用两层
}
}
错误用法提醒
以下写法会编译报错:
-
this(...)写在第二行或之后 → 报错:call to this must be first statement - 在一个构造方法里多次写
this(...)→ 不允许 - 在普通方法里写
this(1, 2)→ 编译错误(只有构造方法能这样用) - 调用不存在的构造方法签名 → 编译不通过
和 super() 的关系
如果构造方法里用了 this(...),就不能再写 super(...),因为 JVM 只允许一条显式构造调用(this 或 super 二选一),且隐式 super() 会被跳过。
例如:this(name) 执行时,会先调用 Person(String),而它内部若没显式写 super(),则默认调用父类无参构造 —— 这个过程自动完成,无需你干预。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










