本帖最后由 龙秋地 于 2012-6-19 16:45 编辑
- Game p = new basketball();
复制代码 上面这句话在java中叫做向上转型.
表示是将子类的对象赋给了父类引用,或者说是父类引用只想子类对象.
试想一下,虽然你创建出的对象是子类的,但是在虚拟机默认的无参构造方法中
第一行应该super()调用父类,将父类初始化的对象传过来.
在内存中是这样的:
成员变量是在堆里,对象是在栈里一般都是new 出来的.
所以子类对象在栈内存里,而num在堆内存里.
虽然父类的引用p指向了子类对象,但是当你调用的是成员变量的时候,
具体所返回的是栈内存中的num,也就是p自己内部的成员变量.
|