作者JeffMcBride (life is magic)
看板java
标题[问题] 物件强制转型
时间Sun Dec 27 01:20:31 2009
各位先进大家好
希望大家帮忙解答小弟的问题
class F{
int a = 5;
void change(){a++;}
}
public class S extends F{
int a = 6;
void change(){a++;}
public static void main(String[] s){
F f = new S();
f.change();
System.out.print(f.a); // 印出5
System.out.print(((S)f).a); // 印出7
}
}
在 F型态 的 f 指派 S实体 後,F观点执行change(),
理论上执行override的change(),但F执行change()後,
是更改了 S实体 中的变数a=6,所以印出f.a时,仍为5。
那麽在JVM中记忆体如何配置呢?
是有一个实体S,但是存在F的变数成员吗?
所以有一份F的变数a,也有一份S的变数a吗?
我这样认知是对的吗?
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: JeffMcBride 来自: 140.114.24.122 (12/27 01:35)