作者neversay (子不語)
看板java
標題Re: [問題] new 語法的疑問
時間Fri Jan 1 22:33:11 2010
※ 引述《SuperNeo (潛水初號機)》之銘言:
: Circle c1 = new Circle(); // 建立Circle類別的副本,名字是c1
: 但是下面這行就讓我亂掉了
: Shape c2 = new Circle(); // 這行我無法用中文翻譯-_-
: 所以我想弄懂的是
: 最前面的 Circle、Shape 跟最後面的Circle、Shape 各代表什麼意思
我用MMORPG(又稱Online game)的觀念來說明一下.....
//所有會動的生物的基本介面
interface Creature {
//攻擊其他生物
void hit(Creature target);
//執行死亡該做的事情(噴裝備,給對手錢 etc)
void die(Creature murder);
......(其他行為就省略了)
}
//玩家類別,實踐玩家該有的功能
class Player extends Creature{
//玩家死掉的時候,要隨機噴一件裝備到地上,馬上回到墓地
void die(Creature murder){...}
}
//怪物類別,實踐一個被砍的怪物該有的行為
class Mob extends Creature {
//怪物死掉的時候,要把所有裝備與錢丟到地上,並......
void die(Creature murder){}
}
這個世界的生物模型被你定義好之後,就可以開始創造世界.....
你在一個空白的地圖上,要創造出一個生物,就可以:
Creature mob1 = new Mob();
這樣你就創造出一個生物了,上面的意思就是
「創造一個生物在記憶體裡,他的實際類別其實是怪物」
Creature mob2 = new Mob();
這樣你就創造第二個生物了,他的實際類別還是怪物。
Creature player = new Player();
這樣你創造的第三個生物其實是玩家。
為什麼要這麼麻煩,如果用Mob mob1 = new Mob();Player player = new Player();
用實際類別來宣告不是更直覺?
詳細的原因有點難講,但總之目的不脫:
1.程式碼重用(subclass) (比較容易理解)
2.介面(subtype) (比較難理解)
: -----------------------------抱怨分隔線----------------------------
: 認識的朋友 都是C# .NET派流,所以自修的頗辛苦
C#在語法基礎上與JAVA差不了多少(應該說C#山寨了JAVA的語法才對......)
: 加上英文又破,只要連結是英文的就沒耐心看完他。-_-"
: 目前自修的書是 "Java2 程式設計範本 陳會安著"
你應該看的是Thinking in Java第三版,或者Java in action這種更入門
但是更紮實的書籍。
內功根基不打好,看過降龍十八掌也打不死一隻蟑螂......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.139.145
推 brianhsu:推:內功根基不打好,看過降龍十八掌也打不死一隻蟑螂! 01/01 22:34
推 qrtt1:心法也很重要,就像那二頁胡家刀法 (誤) 01/01 22:38
→ johnhmj:「C sharp山寨了JAVA」…對呀!沒錯啊~ O_O||| 01/01 22:40
→ johnhmj:微軟推的 J sharp 最後是失敗的~ =_=||| 01/01 22:42
→ neversay:J#真的是不知所云 = = 01/01 22:51
推 SuperNeo:想了解為什麼要指定 Thinking in Java "第三版" 01/01 23:31
因為第二版作者還沒學過Design Pattern,某些章節寫出來的內容會有種野人獻曝的
感覺,不過第三版馬上用Design Pattern改良了整本書。
推 brianhsu:其實個人不推薦程式新手 Thinking in Java。XD 01/01 23:34
也是啦,不過如果已經有了一定基礎的程式人,讀Thinking in Java可以很快抓到
Java的精神~~
推 legnaleurc:我以為是叫 Creature 01/01 23:36
ker ker,Creator這個字我太常用,腦殘打錯 XD
推 PsMonkey:王語嫣世界無敵弱... 01/01 23:44
※ 編輯: neversay 來自: 114.32.139.145 (01/02 00:03)
推 legnaleurc:王語嫣不是可以提高其他男性隊員的攻擊力嗎? 01/02 00:18
推 tkcn:我比較愛楊冪版的小郭襄 (L) 01/02 00:26