作者s864372002 (鋼琴)
看板java
標題[問題] 同名稱reference依執行時情況給予不同型態?
時間Thu Apr 1 10:15:40 2010
現在有個 Class 叫 Player ,另一個則叫 HiddenPlayer ,
後者是 extends 前者而來, method 皆相同但內部有些不同(不然怎麼叫隱角XD)。
我想做的事是依使用者輸入姓名不同而讓 reference p1 能對應到不同 Class,
一開始很白癡地這樣寫:
if (isPrivileged(name)){
System.out.print("Hidden mode started, enter your initial money: ");
HiddenPlayer p1 = new HiddenPlayer(name, in.nextInt());
}
else {
Player p1 = new Player(name, defaultMoney);
}
但這樣 p1 的 scope 就卡在裡面了,我的腦袋也被卡在裡面......
請問有何解決方法呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.28.223
→ LZN:那就宣告Player p1在if外吧,if裡面只需要p1=new Player() 或 04/01 10:32
→ LZN:p1=new HiddenPlayer() 04/01 10:35
→ s864372002:這樣當H_Player使用時,會取用到我想要的method嗎? 04/01 10:37
→ s864372002:可以耶(驚) 我這樣做以為會取到Player的method XDD。 04/01 10:41
→ s864372002:感謝一樓<(_ _)>,看來我繼承還不太熟...... 04/01 10:43
→ tkcn:這特性叫 polymorphism(多型),OO 最重要特色之一 04/01 11:03
→ s864372002:那請問要是二 Class 無繼承關係時又要如何實現多型? 04/01 11:33
→ tkcn:你應該先看清楚什麼是多型 :) 04/01 12:02
→ s864372002:好吧看來我還有得學呢^^。 04/01 14:06