【问题标题】: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)

标签: java constructor default-constructor


【解决方案1】:

我的同行说它将是 G,因为构成默认构造函数的是当您实际更改构造函数主体中的值时。

我想说你的同行在语言层面上是错误的。 Section 8.8.9 of the JLS 使用术语“默认构造函数”来表示“如果没有显式指定构造函数,编译器提供的构造函数”。

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

【讨论】:

  • +1 Z 不会编译,除非 z 应该读作 Z
  • 谢谢 - 也回答键说它是 G,这意味着回答键是错误的。 en.wikipedia.org/wiki/Default_constructor
  • @EricT:是的,这显然是不正确的。叹息。
猜你喜欢
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 2022-01-14
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
相关资源
最近更新 更多