没有Param和Default构造函数混淆

时间:2016-07-20 17:43:13

标签: java constructor

这是一个没有param构造函数的代码

public class misc2 {


    misc2(String x){

    }

    public static void main(String ... args){

        misc2 m = new misc2();  // this throws a compilation error

    }
}

我的问题是,当Java自动创建默认构造函数时,为什么会抛出编译错误,在本例中为misc2(){...}。如果它还没有定义。

此外,现在如果我添加一个无参数构造函数misc2(){...},其中一个实际上是由JVM调用的。它是默认参数还是无参数。第二个问题是因为如果Java已经创建了一个没有参数的默认构造函数,那么在某些情况下需要在Java程序中显式创建构造函数吗?

1 个答案:

答案 0 :(得分:1)

当且仅当没有提供其他显式构造函数时,Java才会创建默认构造函数。

来自文档:

You don't have to provide any constructors for your class, but you must be careful when doing this. The compiler automatically provides a no-argument, default constructor for any class without constructors.

请参阅:https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html