更改了一下问题描述:
Java 写了有参构造后,为什么编译器就不会增加默认的无参构造函数?
这么设计有什么作用,或者是出于什么考虑?
如果在我写了自己的构造函数后,编译器仍然增加无参构造函数的话,对工程有何影响?
例如如下代码:
class Father {
public String name = "Father";
public Father(String name) {
this.name = name;
}
}
public class Test {
public static void main(String[] args) {
Father p = new Father(); //Err
}
}
其实你理解错了
没有“默认的无参构造”
而是你没有写构造函数,Java会帮你自动生成一个无参构造函数。
换一句话说,你无论写了有参数构造函数、无参数构造函数、私有构造函数,只要你写了,Java一看有了,就不帮你生成了。
你写了有参构造,编译器不会自动给你增加无惨构造的。 如果需要的话,可以自己加个无惨构造。