class Base{
Base(){
System.out.println("Base Constructor");
method();
}
void method(){}
}
class Derived extends Base{
int var = 2;
Derived(){
System.out.println("Derived Constructor");
}
@Override
void method(){
System.out.println("var = "+var);
}
}
class Test2{
public static void main(String[] args) {
Derived b = new Derived();
}
}
看到的输出是:
Base Constructor
var = 0
Derived Constructor
我认为出现var = 0是因为Derived对象只是被初始化了一半;类似于Jon Skeet在这里说的。
我的问题是:
如果还没有创建Derived类对象,为什么会调用覆盖的方法?
在什么时候将var赋值为0?
是否存在某些情况下希望这种行为发生的用例?