作者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
1F:推 brianhsu:推:内功根基不打好,看过降龙十八掌也打不死一只蟑螂! 01/01 22:34
2F:推 qrtt1:心法也很重要,就像那二页胡家刀法 (误) 01/01 22:38
3F:→ johnhmj:「C sharp山寨了JAVA」…对呀!没错啊~ O_O||| 01/01 22:40
4F:→ johnhmj:微软推的 J sharp 最後是失败的~ =_=||| 01/01 22:42
5F:→ neversay:J#真的是不知所云 = = 01/01 22:51
6F:推 SuperNeo:想了解为什麽要指定 Thinking in Java "第三版" 01/01 23:31
因为第二版作者还没学过Design Pattern,某些章节写出来的内容会有种野人献曝的
感觉,不过第三版马上用Design Pattern改良了整本书。
7F:推 brianhsu:其实个人不推荐程式新手 Thinking in Java。XD 01/01 23:34
也是啦,不过如果已经有了一定基础的程式人,读Thinking in Java可以很快抓到
Java的精神~~
8F:推 legnaleurc:我以为是叫 Creature 01/01 23:36
ker ker,Creator这个字我太常用,脑残打错 XD
9F:推 PsMonkey:王语嫣世界无敌弱... 01/01 23:44
※ 编辑: neversay 来自: 114.32.139.145 (01/02 00:03)
10F:推 legnaleurc:王语嫣不是可以提高其他男性队员的攻击力吗? 01/02 00:18
11F:推 tkcn:我比较爱杨幂版的小郭襄 (L) 01/02 00:26