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

未调用默认构造函数

阴永福
2023-03-14

为什么:
如果一个类不提供任何构造函数然后默认构造函数(没有参数的构造函数)在编译时由编译器给出,但是如果一个类包含参数化构造函数,那么默认构造函数不是由编译器提供。

我正在编译下面的代码。它给出了编译错误。

代码

class ConstructorTest
{
    // attributes
    private int l,b;

    // behaviour
    public void display()
    {
        System.out.println("length="+l);
        System.out.println("breadth="+b);
    }
    public int area()
    {
        return l*b;
    }

    // initialization
    public ConstructorTest(int x,int y) // Parameterized Constructor
    {
        l=x;
        b=y;
    }

    //main method
    public static void main(String arr[])
    {
        ConstructorTest r = new ConstructorTest(5,10);
        ConstructorTest s = new ConstructorTest();
        s.display();
        r.display();
        r.area();
    }
}

控制台错误:

当我只调用参数化构造函数时。工作正常。但是当您想使用参数化构造函数调用默认构造函数时。编译器给出编译错误,如图所示。

任何即时的帮助都将是非常值得赞赏的。谢啦


共有3个答案

孟哲
2023-03-14

使用javacconstructortest编译时出现错误。java因为您声明了参数化构造函数-公共构造函数测试(intx,inty)。所以编译器不会为类提供任何默认构造函数[public ConstructorTest()]。因此,您不能在第28行调用publicConstructorTest()

曾华翰
2023-03-14

如果您提供了构造函数,那么默认构造函数不会添加到您的类中。你必须自己定义它。

卫子平
2023-03-14

您的问题的答案在您提供的段落中:

但如果类包含参数化构造函数,则编译器不提供默认构造函数。

您已经定义了参数化构造函数,因此默认构造函数不是由编译器提供的,因此必须由您自己提供。

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

  • 我有一个有两个构造函数的类。 有一个具有两个构造函数的类Sample。需要在Sample类中实例化另外三个类(ClassOne,ClassTwo和ClassIII)。所有三个类都包含默认和参数化构造函数。如果调用了Sample类的默认构造函数,则应调用ClassOne,ClassTwo和ClassIII的默认辅助构造函数。如果调用Samples参数化构造函数,则调用ClassOne、ClassII

  • Spring靴和jpa给出了错误 项目的github链接https://github.com/dishankgoyal/springsBoot/tree/master/faculty_project

  • 问题内容: 所有, 我正在尝试在一些古老的Java代码中进行一些单元测试(无接口,无抽象等)。 这是一个使用ServletContext的servlet(我假设它是由Tomcat设置的),并且它的数据库信息在web.xml / context.xml文件中设置。现在,我已经弄清楚了如何制作Fake ServletContext,但是代码已经 遍布整个地方(因此替换它是不可行的)。我需要找到一种方法

  • 问题内容: 我知道我在这里问一些严重的101问题… 我有一些课,还有一个延伸课。在我有一个构造函数,它接受一组参数,并对其字段进行设置。派生类(例如)通常不需要进行修改。现在我的IDE给我 “ Foo中没有默认的构造函数” 。从一点点谷歌搜索,这似乎是因为“构造函数没有继承”。因此,一切都很好,但是我现在如何使它工作而不在每个派生类中复制此构造函数?我假设有一个更合理的方法? 问题答案: 使用构造

  • 问题内容: 不知何故,在下面的Node类中,and变量在Node的所有实例之间共享。 有什么办法可以让我继续使用构造函数参数的默认值(在这种情况下为空列表),但要同时获取它们和拥有其自身的变量以及变量? 我正在使用python 3.1.2。 问题答案: 可变的默认参数通常不会执行您想要的操作。相反,请尝试以下操作: