首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java中的默认构造函数和继承

Java中的默认构造函数和继承
EN

Stack Overflow用户
提问于 2009-02-08 11:10:36
回答 10查看 94.9K关注 0票数 51

我有一个关于Java中的默认构造函数和继承的问题。

通常,如果您编写了一个类并且不包含任何构造函数,Java会自动为您提供一个默认构造函数(一个不带参数的构造函数),它会用一些默认值(0、null或false)初始化该类的所有实例变量(如果有的话)。但是,如果您编写了一个带有一些参数的构造函数,并且没有编写任何默认构造函数,那么Java就不会提供默认构造函数。我的问题是:继承自其他类的类是什么情况-如果我编写了一个构造函数,其中有一些参数,但没有包括默认构造函数,它们是否继承了超类的默认构造函数?

EN

回答 10

Stack Overflow用户

发布于 2009-02-09 03:38:15

如果不创建构造函数,则the default empty constructor is automatically created.

  • If any构造函数不会显式调用或此构造函数作为其第一个语句a call to super() is automatically added.

一直都是。

票数 63
EN

Stack Overflow用户

发布于 2009-02-08 11:18:29

除非您使用super(...)构造函数调用其父对象的空构造函数。注意:它对所有你的类都是这样做的,甚至是那些扩展Object的类。

这不是继承,子类不会用相同的参数得到相同的构造函数。但是,您可以添加调用超类的一个构造函数的构造函数。

票数 11
EN

Stack Overflow用户

发布于 2012-11-30 02:49:48

基本规则是对构造函数的调用(或调用)应该是JVM需要执行的第一个语句,

因此,当您有一个只有参数化构造函数而没有默认构造函数的超类,并且基类没有显式调用超类的参数化构造函数时,JVM提供了super();调用,它会抛出错误,因为超类没有默认构造函数,所以我们要么在超类中提供默认构造函数,要么在基类构造函数中显式调用超类的参数化构造函数。当我们给出显式调用时,JVM不会费心去放入行super();因为构造函数调用应该是方法的第一个语句,这是不可能发生的(因为我们的显式调用)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/525548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档