高手请进:类中奇怪的大括号 和 类实例初始化顺序?
我找到个有趣的例子,自己改了改
有两个问题百思不得其解,高手指点
public class Base {
int i = 10;
{
System.out.println("Base:"+i);
//问题1:这是什么用法???,i需要在{}之前定义,否则出错,上句什么时候执行?
}
Base(int x){
f();
}
void f(){System.out.println("Base f "+i);}
}
public class BSub extends Base{
int i = 30;
public BSub() {
super(1);//实际调用的方法f是子类的f
}
void f(){System.out.println("BSub f "+i);}
//问题2:打印的i是0,这是子类还是父类的i?
//这里类实例化的顺序到底是怎样的??
public static void main(String[] args){
new BSub();
}
}