请参考下面的
Java代码:
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 says here
我的问题是:
如果没有创建派生类对象,为什么会调用重写方法?
在什么时候是var赋值0?
是否有任何需要这种行为的用例?