【发布时间】:2019-11-16 20:54:45
【问题描述】:
我在学习使用this() 调用重载的构造函数时遇到了这个限制:
你不能在调用中使用构造函数类的任何实例变量 到这个()
例如:
class Test{
int x;
public Test() {
this(x); //Does not compile
}
public Test(int y) {}
void method1() {
method2(x); //OK
}
void method2(int y) {}
}
我知道不需要将实例字段传递给构造函数,因为默认情况下它是可见的。但是,为什么同样的限制不适用于实例方法?
【问题讨论】:
-
简而言之:构造函数构造类。所以假设这个类within已经存在似乎是不安全的。在这种情况下
x. -
一个更有趣的测试当然是从构造函数而不是从方法调用
method2。 -
stackoverflow.com/a/14806340/2550406 声明实例变量初始化发生在构造函数的开头。这使我的第一条评论无效 - 如果变量已经初始化。
标签: java