Java 默认构造函数问题 - 啥实际上构成了“默认构造函数”? [复制]
Posted
技术标签:
【中文标题】Java 默认构造函数问题 - 啥实际上构成了“默认构造函数”? [复制]【英文标题】:Java Default Constructor Issue - What Actually Constitutes a 'Default Constructor'? [duplicate]Java 默认构造函数问题 - 什么实际上构成了“默认构造函数”? [复制] 【发布时间】:2012-12-13 15:47:10 【问题描述】:可能重复:Java default constructor
我正在研究 Java 练习题并遇到了这个问题:
给定:
class X
class Y Y ()
class Z z(int i )
哪个类有默认构造函数?
A. 仅限 X
B.仅限于
C.仅限Z
D. X 和 Y
E. Y 和 Z
F. X 和 Z
G. X、Y 和 Z
我会说正确的答案是 A,因为类 X 是唯一没有任何明确定义的构造函数的类。我的同行说它将是 G,因为构成默认构造函数的是当您实际更改构造函数主体中的值时。
我们已经进行了一些研究,但对于默认构造函数实际上是什么(在这个级别),答案似乎有所不同。
谁能在这里提供答案和合乎逻辑的解释?非常感谢。
【问题讨论】:
是z(int i)
还是Z(int i)
?
【参考方案1】:
我的同行说它将是 G,因为构成默认构造函数的是当您实际更改构造函数主体中的值时。
我想说你的同行在语言层面上是错误的。 Section 8.8.9 of the JLS 仅使用术语“默认构造函数”来表示“如果没有显式指定构造函数,编译器提供的构造函数”。
我希望更明确地说明这一点 - 我也希望 C# 使用相同的术语:(
【讨论】:
+1Z
不会编译,除非 z
应该读作 Z
谢谢 - 也回答键说它是 G,这意味着回答键是错误的。 en.wikipedia.org/wiki/Default_constructor
@EricT:是的,这显然是不正确的。叹息。以上是关于Java 默认构造函数问题 - 啥实际上构成了“默认构造函数”? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
java的继承中子类先调用父类无参构造函数是为了干啥,默认这个无参的构造函数啥也不做,那调用它干啥