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

Eri*_*c T 0 java constructor default-constructor

可能重复:
Java默认构造函数

我正在研究Java实践问题,并且遇到了这个问题:

鉴于:

class X {}

class Y {Y () {}}

class Z {z(int i ) {} }
Run Code Online (Sandbox Code Playgroud)

哪个类有默认构造函数?

A. X.

B.仅限Y.

C.仅限Z.

D. X和Y.

E. Y和Z.

F. X和Z.

G. X,Y和Z.

我会说正确的答案是A,因为类X是唯一没有任何明确定义的构造函数的类.我的同行说它会是G,因为构成默认构造函数的是你在构造函数体中实际更改值的时候.

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

任何人都可以在这里提供答案和逻辑解释吗?非常感谢你.

Jon*_*eet 9

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

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

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

  • 除非`z`应该读作'Z`,否则+1`Z`不会编译 (2认同)