在java中,this关键字可在构造方法首行调用本类其他构造方法实现构造链,语法为this(参数列表),仅限一次且不可与super()共存,用于减少重复初始化代码。

在 Java 中,this 关键字可以在构造方法中用于调用本类的其他构造方法,这叫构造方法链(constructor chaining)。但必须满足一个关键条件:调用必须是构造方法中的第一行语句,且只能出现一次。
如何用 this 调用其他构造方法
语法很简单:this(参数列表);。它会根据传入的参数匹配本类中已定义的另一个构造方法。
- 只能调用本类的构造方法,不能调用父类(父类要用
super()) - 不能在普通方法或静态上下文中使用
this(...) - 不能和
super(...)同时出现(二者都必须是第一行)
典型使用场景:减少重复代码
比如一个类有多个构造方法,参数不同但核心初始化逻辑相似,就可以让参数少的构造方法“委托”给参数多的:
public class Person {
private String name;
private int age;
public Person(String name) {
this(name, 0); // 调用下面的构造方法
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
这样避免了在两个构造方法里都写 this.name = name; 这类重复赋值。
常见错误和限制
以下写法都会编译报错:
-
this("Alice");放在第二行或之后 → 编译失败:“call to this must be first statement” - 在一个构造方法里既写
this(...)又写super(...)→ 编译失败:二者互斥 -
this();调用不存在的无参构造方法 → 编译失败:“cannot resolve constructor” - 构造方法中递归调用自己(如 A 调用 A)→ 编译失败:不允许直接或间接自调用
注意 this() 和 this 的区别
this(...) 是构造调用,专指调用本类其他构造方法;而单独的 this(如 this.name)是指当前对象实例,用于区分成员变量和参数名。两者语法、用途、位置完全不同,别混淆。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











