作者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
1F:→ LZN:那就宣告Player p1在if外吧,if里面只需要p1=new Player() 或 04/01 10:32
2F:→ LZN:p1=new HiddenPlayer() 04/01 10:35
3F:→ s864372002:这样当H_Player使用时,会取用到我想要的method吗? 04/01 10:37
4F:→ s864372002:可以耶(惊) 我这样做以为会取到Player的method XDD。 04/01 10:41
5F:→ s864372002:感谢一楼<(_ _)>,看来我继承还不太熟...... 04/01 10:43
6F:→ tkcn:这特性叫 polymorphism(多型),OO 最重要特色之一 04/01 11:03
7F:→ s864372002:那请问要是二 Class 无继承关系时又要如何实现多型? 04/01 11:33
8F:→ tkcn:你应该先看清楚什麽是多型 :) 04/01 12:02
9F:→ s864372002:好吧看来我还有得学呢^^。 04/01 14:06