java构造方法用于对象初始化,必须与类名相同、无返回类型,仅在new时调用;支持重载(参数列表不同),默认构造方法在定义任一构造后消失;不可用static等修饰,this()调用须首行且唯一。

Java 中构造方法用于对象创建时初始化状态,必须与类名完全相同、无返回类型(连 void 都不能写),且只能在 new 时自动调用。重载不是可选项,而是常见实践——它让一个类支持多种初始化方式,关键在于参数列表差异,而非名字或修饰符。
构造方法的基本写法
每个类至少有一个构造方法。若没写任何构造方法,编译器会自动生成一个无参、空体、public 的默认构造方法;但只要定义了任意一个带参构造方法,这个默认构造就立即消失。
- 格式:访问修饰符 + 类名 + (参数列表) { 初始化逻辑 }
- 例如:
public Student(String name, int age) { this.name = name; this.age = age; } - 不能加
static、final、abstract等修饰符 - 不写访问修饰符时,默认为包级可见(同包可访问)
构造方法重载的三个硬性条件
重载只看参数列表,其他所有元素都不参与区分。
- 方法名必须严格等于类名(这是构造方法的前提,不是“可选规则”)
- 参数个数不同:如
()、(String)、(String, int) - 参数类型不同:如
(int)和(Integer),或(String, int)和(String, long) - 参数顺序不同:如
(String name, int id)和(int id, String name)是两个独立构造方法
this() 调用实现逻辑复用
避免重复赋值代码,可用 this(参数) 在一个构造方法中调用本类另一个构造方法,但有严格限制:
- 必须放在方法体第一行
- 每个构造方法最多调用一次
this() - 不能和
super()同时出现 - 不能形成调用循环,比如 A → B → A
- 示例:
public Student(String name) { this(name, 0); }复用双参构造,年龄设为 0
哪些写法是非法的
这些操作会导致编译失败,不是运行时异常:
- 仅靠返回类型不同来“重载”(构造方法本就没有返回类型,Java 直接不认)
- 在普通方法里写
this() - 把
this()写在第二行或更后面 - 用
static或final修饰构造方法 - 试图继承并“重写”父类构造方法(构造方法不能被继承,也不能被重写)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











