首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

java继承有关问题

2012-03-25 
java继承问题class Super{int i10Super(){print()i20}void print(){System.out.print(i)}}public cl

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

热点排行