公司一个程序员反馈构造函数找不到,先上代码:
public class Person {
private String name;
// 正确的构造函数:无返回类型,名称与类名相同
public Person(String name) {
this.name = name; // 初始化成员变量
}
// 加了void,这不是构造函数,而是普通方法!
public void Person(String name) {
this.name = name; // 只是普通的赋值逻辑,不会在new对象时自动执行
}
}
核心问题就在手欠,写了void。
Java 语法明确规定:
构造函数的名称必须与类名完全相同(包括大小写);
构造函数不能声明返回类型(包括void);
如果加了void,编译器会把它识别为 "一个名称和类名相同的普通方法",而不是构造函数。
这是因为构造函数的唯一目的是初始化对象(为对象的成员变量赋值、执行初始化逻辑),它不是 "返回某个值",而是 "创建并返回当前类的实例",所以不能定义返回值,包括void