构造方法是对象创建时唯一自动执行的特殊方法,必须与类名完全一致、无返回类型,仅能通过new调用;可重载,编译器仅在未定义任何构造时提供默认无参构造。

Java 中构造方法不是“可选的初始化方式”,而是对象创建时唯一自动执行的特殊方法。它必须与类名完全一致、不写任何返回类型(包括 void),且只能通过 new 调用。
构造方法的基本写法
核心格式非常固定:
- 修饰符(如 public) + 类名 + 小括号(可带参数) + 大括号
- 类名和方法名必须大小写完全一致,比如类叫
Student,构造方法就只能叫Student() - 绝对不能写返回值类型——写
void或String都会让它变成普通方法,JVM 不再识别为构造方法
示例:
public class Student {
private String name;
private int age;
// 正确:无参构造
public Student() {
System.out.println("对象已创建");
}
// 正确:有参构造
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
多个构造方法怎么共存(重载)
一个类可以有多个构造方法,只要它们的参数列表不同(类型、个数或顺序不同),就构成重载:
-
Student()、Student(String name)、Student(String name, int age)可以同时存在 - 调用哪个,取决于
new时传入的实参。例如:new Student("张三")会匹配单参构造 - 避免重复代码:可用
this(...)在一个构造中调用另一个,但必须是第一行,且只能出现一次
正确写法示例:
public Student(String name) {
this(name, 0); // ✅ 调用双参构造,设默认年龄为 0
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
默认构造方法的“隐形规则”
编译器是否提供默认无参构造,取决于你有没有手动写过构造方法:
- 没写任何构造方法 → 编译器自动加一个
public 类名() {} - 只要写了任意一个构造方法(哪怕只有一个带参的)→ 默认无参构造立刻消失
- 因此,如果后续需要无参创建对象(比如框架反射、JSON 反序列化),建议显式补上
public 类名() {}
使用时的关键注意事项
构造方法不是普通方法,调用和设计都有硬性限制:
- 不能手动调用,比如
stu.Student()是非法语法;只能通过new Student(...)触发 - 在构造方法里调用非 final 的实例方法,可能引发子类字段未初始化的问题(因父类构造先于子类字段赋值)
- 继承时,若父类没有无参构造,子类构造第一行必须显式写
super(...)调用父类有参构造 - 私有构造(
private)常用于单例模式或禁止外部实例化
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











