java作业求指导?程序到底是怎么一步一步运行的,怎么隐藏的?

public class Father{
int a=100;
public void miner(){
a--;
}
public static void main(String[] arg){
Father father=new Father();
Son son=new Son();
System.out.println("a of son is :" +son.a);
System.out.println("a of son's super is :" +son.getA());
son.miner();
System.out.println("a of son is :"+son.a);
System.out.println("a of son's super is :" +son.getA());
}
}
class Son extends Father {
int a=0;
public int getA(){
return a;
}
}

马士兵说过,学好内存分析你就理解了一切。
基类Father有个成员变量a=100;子类Son也有个成员变量a=0;(初始化)
在main方法中Father father=new Father();相当于站内存分配一变量father指向堆内存的new Father(),new Father()里的a=100;Son son=new Son();相当于站内存分配一变量son指向堆内存的new Son(),但是new Son()里还有个new Father();new Son()里有一成员变量a=0,他里面的new Father()里也有个成员变量a=100;
所以son.a = 0;son.getA() = 0;
程序执行到son.miner();只是将new Son()里的new Father()的a--;对new Son()里的a=0没有影响。
所以后面的son.a = 0;son.getA() = 0;跟前面一样。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-19
程序是从main()方法开始的,然后一句一句执行,其中可能会调用很多方法。
什么隐藏?子类对父类已有变量的隐藏吗?子类重新定义父类相同的变量类型和变量名就行了。
但是这句
Son son=new Son();
这行得通吗?
Son的构造函数没写,而且父类Father的构造函数你没写?
第2个回答  2012-04-19
用debug调试里面有单步运行
相似回答