java - 没有参数和默认构造函数混淆

标签 java constructor

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

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程序中某些情况下还需要显式创建构造函数吗?

最佳答案

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

来自文档:

您不必为您的类提供任何构造函数,但执行此操作时必须小心。编译器会自动为任何没有构造函数的类提供无参数的默认构造函数。

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

关于java - 没有参数和默认构造函数混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38487314/

相关文章:

java - 如何知道 JSON 字符串是否可以无错误地转换为 JSONObject?

java - 根据一个数组的值对两个单独的 Java 数组进行排序

java - 如何返回到不可见的上一帧

java - 当您不需要本地化时,是否有一种简约的方法来获取默认的 ResourceBundle?

c++ - 有没有办法在构造函数代码而不是初始化列表中初始化类的成员对象?

oop - 为什么我们需要 OOP 中的构造函数?

java - GC 和 FontData 获取字体高度有什么区别?

javascript - Javascript中的纸牌游戏,构造函数错误

javascript - 新的 Array(9) 语法的目的是什么?

派生类的C++初始化列表编译失败,为什么?