class Test2{
public static void main(String args[]){
A a=new A();
}
}
class A extends B{
int i=5;
static int j=4;
A(){
System.out.println("i="+i);
System.out.println("j="+j);
}
void m(){
System.out.println("i="+i);
System.out.println("j="+j);
}
}
class B{
B(){
m();
}
void m(){}
}
结果如下:
i=0
j=4
i=5
j=4
A继承B,A实例化的时候先调用B的构造函数,所以会先执行一次m方法,此时私有变量还没初始化,所以是i是0,后边初始化完成,就变成了5,而j是静态变量,这个初始化会在构造函数之前进行初始化,所以第一次打印就是5,除非重新赋值,否则一直都是5