作者forris (喬巴)
看板java
標題[J2SE] 多型與轉型
時間Sat Feb 16 17:13:47 2008
class Father{
String name = "Father";
String getName(){
return name;
}
String greeting(){
return "class Father";
}
}
class Son extends Father{
String name = "Son";
String greeting(){
return "class Son";
}
void foo(){
System.out.println((Son)this).greeting();
System.out.prtinln((Father)this).greeting();
}
}
要問印出來的訊息
((Son)this).greeting() 是指 Son 類別的 greeting(), 所以訊息為
class Son.
((Father)this).greeting() 是指 Son 類別的 greeting(), 但是為 Father 型別,
出現的訊息不應該跟著轉型後的型別走嗎?
怎麼不是
class Father 而是
class Son ?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.196.131
推 neigence:當然是跟你的實體走 不會跟著型態走 02/16 18:57
→ neigence:型態決定你可以呼叫什麼 實體決定你呼叫的是什麼 02/16 18:58
推 H45:也就是說實體是實體,樣子是樣子 02/16 20:37