[問題] 物件強制轉型
各位先進大家好
希望大家幫忙解答小弟的問題
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)
推
12/27 02:52, , 1F
12/27 02:52, 1F
討論串 (同標題文章)