Java默认构造函数问题 - 什么实际构成'默认构造函数'?

时间:2012-12-13 15:47:10

标签: java constructor default-constructor

  

可能重复:
  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,因为构成默认构造函数的是你在构造函数体内实际更改值的时候。

我们已经做了一些研究,当涉及到默认构造函数实际上是什么(在这个级别)时,答案似乎有所不同。

有人能在这里提供答案和逻辑解释吗?非常感谢你。

1 个答案:

答案 0 :(得分:9)

  

我的同行说它会是G,因为构成默认构造函数的是当你在构造函数体内实际更改值时。

我会说你的同伴在语言层面上是错误的。 Section 8.8.9 of the JLS 使用术语“默认构造函数”来表示“如果未明确指定构造函数,则由编译器提供的构造函数”。

我希望更明确地说明这一点 - 我也希望C#使用相同的术语:(