可能重复:
Java default constructor
我正在研究Java练习题,并遇到了这个问题:
假设:
class X {}
class Y {Y () {}}
class Z {z(int i ) {} }
哪个类有默认构造函数?
A。仅限X
B。仅限Y
C。仅限Z
D。 X和Y
E。 Y和Z
F。 X和Z
G。 X,Y和Z
我会说正确答案是A,因为类X是唯一没有任何明确定义的构造函数的类。我的同行说它会是G,因为构成默认构造函数的是你在构造函数体内实际更改值的时候。
我们已经做了一些研究,当涉及到默认构造函数实际上是什么(在这个级别)时,答案似乎有所不同。
有人能在这里提供答案和逻辑解释吗?非常感谢你。
答案 0 :(得分:9)
我的同行说它会是G,因为构成默认构造函数的是当你在构造函数体内实际更改值时。
我会说你的同伴在语言层面上是错误的。 Section 8.8.9 of the JLS 仅使用术语“默认构造函数”来表示“如果未明确指定构造函数,则由编译器提供的构造函数”。
我希望更明确地说明这一点 - 我也希望C#使用相同的术语:(