Re: [問題] new 語法的疑問
※ 引述《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
推
01/01 22:34, , 1F
01/01 22:34, 1F
推
01/01 22:38, , 2F
01/01 22:38, 2F
→
01/01 22:40, , 3F
01/01 22:40, 3F
→
01/01 22:42, , 4F
01/01 22:42, 4F
→
01/01 22:51, , 5F
01/01 22:51, 5F
推
01/01 23:31, , 6F
01/01 23:31, 6F
因為第二版作者還沒學過Design Pattern,某些章節寫出來的內容會有種野人獻曝的
感覺,不過第三版馬上用Design Pattern改良了整本書。
推
01/01 23:34, , 7F
01/01 23:34, 7F
也是啦,不過如果已經有了一定基礎的程式人,讀Thinking in Java可以很快抓到
Java的精神~~
推
01/01 23:36, , 8F
01/01 23:36, 8F
ker ker,Creator這個字我太常用,腦殘打錯 XD
推
01/01 23:44, , 9F
01/01 23:44, 9F
※ 編輯: neversay 來自: 114.32.139.145 (01/02 00:03)
推
01/02 00:18, , 10F
01/02 00:18, 10F
推
01/02 00:26, , 11F
01/02 00:26, 11F
討論串 (同標題文章)