日期:2014-05-20  浏览次数:20682 次

java继承问题
class Super{
int i=10;
Super(){
print();
i=20;
}
void print(){
System.out.print(i);
}
}
public class Sub extends Super{
int j=30;
Sub(){
print();
j=40;
}
void print(){
System.out.print(j);
}
public static void main(String[] args){
System.out.print(new Sub().j);
}
}
运行程序是03040,谁能解释下这是如何继承的(最好有详细解释)。先谢谢了~~

------解决方案--------------------
第一个0是new Sub()的时候Sub()先执行父类构造函数,父类构造函数初始化的时候先初始化i=10,执行print的时候执行子类重写的print这时候j还是0。

父类构造函数执行完回到子类构造函数,先初始化J=30,然后执行print,这时候j=30.
然后构造函数最后j=40,执行new Sub().j时,j=40