解决方案 »
- ApplicationWindow createContents() Question ,Thanks for ur suggestion.......vexation--vexation
- Java中怎么输入一个字符串
- 菜鸟问题,在线等~~~~
- 怎么把long 类型的数据转换成 String
- 对面的高手看过来!!!!!在线等待
- 一定给分:文件下载时间太长,能否在下载文件时,不停的显示“请等候”之类的信息??
- 请教package和classpath的问题
- jb6中开发entity bean当structure面板的列类型发生变化时,如何更新已生成的bean
- 为什么这个程序画不出东东?
- Sybase数据库的jdbc驱动程序应如何加载到weblogic中(应放到社么路径下,如何配置)???急 急 急
- 新手求教
- Java实现桌面效果
Father show...0
Sons's Constructor run...8
Father show...8
才对,就是不能理解从内存角度分析的结果为什么不对,
图中的三块内存区域分别是,左上是栈内存,右上是堆内存,下边是方法区
所以到了构造方法中这些成员变量已经有值了。当然了,如果你在父中构造方法中调用覆盖的子类的 show 方法,那么子类中的 number 这个时候还没有初始化,因此子类的 show 在被父类的构造方法调用时它得到的 this.number 就是0 而不是8。
可以在各个位置进行输出
父类{//父类代码块} 构造函数 属性值
子类{//子类代码块} 构造函数 属性值
看看java对类加载,先运行哪些
sons.show();
如果show方法没有在子类中覆盖,那么此时sons.show();其实访问的是父类中的show方法,那么访问父类中的show方法时,show方法里面访问的number为什么是父类的成员变量,而不是子类的成员变量呢?因为此时的this指向的对象,其里面存放的成员变量应该是this.number应该等于8,super.number应该等于3。难道我要理解此时new出来的对象类型是Father类型的?
成员变量应该是前期绑定的,普通方法(非static和final)才是动态绑定的