在java中,this调用本类其他构造方法必须位于第一行且仅一次,语法为this(参数列表);不能与super共存,不可循环调用,本质是构造器链式委托。

在 Java 中,用 this 调用本类的其他构造方法,必须写在构造方法的第一行,且只能调用一次。
语法格式
写法很简单:this(参数列表);,括号里传入对应构造方法所需的实参。
- 只能出现在构造方法内部
- 必须是第一句代码(否则编译报错)
- 不能和
super(...)同时出现(二者都必须放在首行) - 不能形成循环调用(比如 A 调 B,B 又调 A)
常见写法示例
假设有一个 Person 类,有多个构造方法:
public class Person {
private String name;
private int age;
// 无参构造
public Person() {
this("未知", 0); // 调用含两个参数的构造器
}
// 只传名字
public Person(String name) {
this(name, 18); // 默认年龄设为 18
}
// 全参构造
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
这样写可以避免重复赋值逻辑,把初始化集中到一个“主构造器”里。
注意点
this(...) 是构造器链式调用,本质是让当前构造过程委托给另一个构造方法完成初始化。
- 如果没写任何
this(...)或super(...),编译器会自动插入super(); - 一旦写了
this(...),就不会再自动加super(); - 参数类型和个数必须严格匹配被调用的构造方法签名
错误写法举例
以下都会编译失败:
-
this("张三");写在第二行 → 报错:必须是首句 - 在一个构造方法里写两次
this(...)→ 报错:只能调用一次 - 同时写
this("a");和super();→ 报错:冲突 -
this();但类中没有无参构造 → 报错:找不到匹配构造器
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











