这是一个没有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程序中显式创建构造函数吗?
答案 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