Sig*_*dus -3 java theory constructor
我在下面的问题是理论上的,然后是实用 从许多在线可用的Java资源中我发现default constructor一个类的规格低于规范:
throws条款Java语言规范没有提供定义default constructor,它只说明了这一点
如果类(定义)不包含构造函数声明,则默认构造函数(由编译器)隐式声明.
请注意,措辞implicitly declared暗示明确定义的默认构造函数是可能的.让我们考虑下面的课程:
public class Point {
private int x;
private int y;
public int getX() { return x; }
public int getY() { return y; }
}
Run Code Online (Sandbox Code Playgroud)
对于这个类,编译器将生成以下默认构造函数:
public Point() {
super();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我作为一个程序员实现一个构造函数,public Point() { }它可以被称为default constructor上面的类Point吗?如果没有,那么任何明确定义的构造函数都可以被认为是default constructor?我很欣赏某位专家或者对这个主题绝对肯定的答案.
如果您明确定义了任何构造函数,那么它就不能是默认构造函数,即使您编写的代码与编译器生成的默认构造函数完全等效.默认,这里,表示程序员没有任何操作.
更新:OP希望根据证据得出答案
第13.4.12节"方法和构造函数声明"(JLS8)中的编译器规则:
证据:如果非内部类的源代码不包含声明的构造函数,则隐式声明不带参数的默认构造函数(第8.8.9节).
证据:将一个或多个构造函数声明添加到此类的源代码将阻止此默认构造函数被隐式声明,从而有效地删除构造函数,除非其中一个新构造函数也没有参数,因此替换了默认构造函数.