在你的程序里SON继承了FATHER,对于 Father f = new Son();,首先程序会初始化FAHTER,再初始化SON,对于变量 a来说,引用变量就近原则来说呢,就会先引用FATHER类中的.
这里涉及到加载的顺序,我写了个小例子:
class A{
//int i=1; //当访问时,才知道是否被初始化了
{
int i=1;
System.out.println("------"+i);
} //相当int i = 1,初始化时打印
public A(){
System.out.println("A构造函数调用了`````");
}
public void go(){
System.out.println("A----------------");
}
}
class B extends A{
{
int i=2;
System.out.println("*****"+i);
}
public B(){
System.out.println("B构造函数调用了`````");
}
public void go(){
System.out.println("B----------------");
}
}
public class Test {
public static void main(String[] args) {
A a=new B(); System.out.println(a.i );
}
}
----打印
------1
A构造函数调用了`````
*****2
B构造函数调用了````` 1
|