当前位置: 首页 > 知识库问答 >
问题:

为什么默认的无参数构造函数失败时,参数构造函数写在Java?[重复]

端木高邈
2023-03-14

当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();  //Error
    }
}

共有1个答案

云瑞
2023-03-14

如果没有提供构造函数,编译器将生成一个默认的零参数构造函数。

如果您提供任何构造函数,编译器将不会生成任何其他构造函数。在这种情况下,单参数构造函数由您提供,因此编译器不会生成默认构造函数。

 类似资料:
  • 在C#、C和Java中,当你创建一个带参数的构造函数时,默认的无参数构造函数就消失了。我一直只是接受这个事实,但现在我开始想为什么。 这种行为的原因是什么?这仅仅是一个“安全度量/猜测”,说“如果你已经创建了自己的构造函数,你可能不希望这个隐含的函数四处游荡”?或者它有一个技术原因,使得编译器不可能在你自己创建构造函数后添加一个?

  • 实际上,我不明白无参数构造函数和默认构造函数的区别是什么。 在创建名为cFrame的Test对象时,是否调用此类的默认构造函数?

  • 问题内容: 其实我不明白,无参数构造函数和默认构造函数有什么区别。 创建名为cFrame的Test对象时,这是否调用此类的默认构造函数? 问题答案: 该构造函数是一个无参数的构造函数,代表您的Java编译器插入; 它包含对(not )的调用,这是默认行为。如果实现任何构造函数,则不再收到默认的构造函数。 JLS-8.8.9。默认构造函数说(部分), 如果一个类不包含构造函数声明,则隐式声明一个没有

  • 本文向大家介绍解析C++中构造函数的默认参数和构造函数的重载,包括了解析C++中构造函数的默认参数和构造函数的重载的使用技巧和注意事项,需要的朋友参考一下 C++构造函数的默认参数 和普通函数一样,构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,即如果用户不指定实参值,编译系统就使形参取默认值。 【例】 程序运行结果为: 程序中对构造函数的定义(第12-16行)也可以改写成参数初始化

  • 若类有参数化的构造函数,为什么Java不提供默认构造函数?考虑下面的例子 这里我明确需要添加默认构造函数。有什么原因,为什么Java没有为具有参数化构造函数的类提供默认构造函数?

  • 问题内容: 默认构造函数到底是什么?你能告诉我以下哪个是默认构造函数,它与其他构造函数有何不同? 问题答案: 他们都不是。如果定义,则不是默认值。 除非你定义另一个构造函数,否则默认构造函数是自动生成的无参数构造函数。任何未初始化的字段都将设置为其默认值。对于你的榜样,它看起来像这样假设的类型String,int以及int,那类本身是公共的: 这与 完全没有构造函数。但是,如果定义至少一个构造函数