[問題] 同名稱reference依執行時情況給予不同型態?

看板java作者 (鋼琴)時間16年前 (2010/04/01 10:15), 編輯推噓0(009)
留言9則, 3人參與, 最新討論串1/1
現在有個 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

04/01 10:32, , 1F
那就宣告Player p1在if外吧,if裡面只需要p1=new Player() 或
04/01 10:32, 1F

04/01 10:35, , 2F
p1=new HiddenPlayer()
04/01 10:35, 2F

04/01 10:37, , 3F
這樣當H_Player使用時,會取用到我想要的method嗎?
04/01 10:37, 3F

04/01 10:41, , 4F
可以耶(驚) 我這樣做以為會取到Player的method XDD。
04/01 10:41, 4F

04/01 10:43, , 5F
感謝一樓<(_ _)>,看來我繼承還不太熟......
04/01 10:43, 5F

04/01 11:03, , 6F
這特性叫 polymorphism(多型),OO 最重要特色之一
04/01 11:03, 6F

04/01 11:33, , 7F
那請問要是二 Class 無繼承關係時又要如何實現多型?
04/01 11:33, 7F

04/01 12:02, , 8F
你應該先看清楚什麼是多型 :)
04/01 12:02, 8F

04/01 14:06, , 9F
好吧看來我還有得學呢^^。
04/01 14:06, 9F
文章代碼(AID): #1Bj07Ewq (java)