Java 写了有参构造后,为什么编译器就不会增加无参构造函数?

更改了一下问题描述:

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一看有了,就不帮你生成了。

你写了有参构造,编译器不会自动给你增加无惨构造的。 如果需要的话,可以自己加个无惨构造。