【发布时间】:2015-04-16 17:19:58
【问题描述】:
我下面的问题是理论上的,而不是实际的。
从许多在线可用的 Java 资源中,我发现一个类的 default constructor 具有以下规范:
- 不接受任何参数
- 没有
throws子句 - 有一个空的身体
Java 语言specification 不提供default constructor 的定义,它只声明
如果类(定义)不包含构造函数声明,则默认 构造函数是隐式声明的(由编译器)。
请注意措辞implicitly declared 暗示显式定义的默认构造函数是可能的。让我们考虑下面的课程:
public class Point {
private int x;
private int y;
public int getX() { return x; }
public int getY() { return y; }
}
对于这个类,编译器会生成下面的默认构造函数:
public Point() {
super();
}
我的问题是,如果我作为一名程序员将构造函数实现为public Point() { },是否可以将其称为default constructor 用于上述类Point?如果不是,那么任何显式定义的构造函数都可以被视为default constructor 吗?我很感谢专家或对此主题绝对确定的人的回答。
【问题讨论】:
-
JLS 确实定义了默认构造函数是什么。请参阅 Java 8 语言规范的第 8.8.9 节。
-
如果您认为这不是重复的;请让我们知道为什么“这不是一个有效的答案”不是一个原因。什么无效?什么是有效的?
-
重新打开,因为编辑说明了为什么这与其他应该重复的问题不同。对 Java 有更多经验的人将不得不仔细检查我。如果它仍然是某些东西的副本,请重新关闭并指向副本。
标签: java constructor theory