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# 使用相同的术语:(

【讨论】:

+1 Z 不会编译,除非 z 应该读作 Z 谢谢 - 也回答键说它是 G,这意味着回答键是错误的。 en.wikipedia.org/wiki/Default_constructor @EricT:是的,这显然是不正确的。叹息。

以上是关于Java 默认构造函数问题 - 啥实际上构成了“默认构造函数”? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

java的继承中子类先调用父类无参构造函数是为了干啥,默认这个无参的构造函数啥也不做,那调用它干啥

注解有啥作用,啥时候用注解。Java中怎么样实现注解的构造函数

类与其动态内存分配

java怎么调用带参数构造函数

构造函数的有参和无参的区别,构造函数的参数是派啥用场的?

java中静态方法,静态变量,静态初始化器,构造函数,属性初始化都是啥时候调用的? 它们的先后顺序。