作者swpoker (swpoker)
看板java
标题Re: [问题] is-a 关系在Java程式的时候的用意?
时间Thu Aug 1 15:49:02 2013
继承是拿来用的?还是真的有关系阿?
从而由两个角度来看
1.由上而下
2.由下而上
这两个不同的观点就会对於继承的定义跟使用就会不同
然後你的问题就是把这两个观点搞在一起了,混着看了
我以反例来说明为何要继承
脚色 剑士 魔法师 可不可不用要继承还有多型呢?
当然可以阿!
所以各物件的行为如下
剑士{
void 用剑攻击(魔法师);
void 男子汉的跑步();
void 男子汉的位置();
}
魔法师{
void 魔法攻击(剑士);
void 乌龟的跑步();
void 老人的位置();
}
//然後要开始决斗了
剑士.男子汉的跑步();
魔法师.乌龟的跑步();
if 剑士.男子汉的位置() == 魔法师.老人的位置(){
//决斗!!!
剑士.用剑攻击(魔法师);
魔法师.魔法攻击(剑士);
}
以上就是没有继承还有多型的用法
看出来这会有什麽问题吗?
因为书上都是跟你说要用这个!要用那个!
所以看完之後,会有一种疑问就是:真的假的?!
所以你可以反思
如果不用的话
会怎麽样?
通常你写个短短的范例之後,就会卡住了
然後你就明白书上写的了
※ 引述《SamLucien (黑)》之铭言:
: 我用Java SE技术手册 良葛格 这本想提问题
: (第六章 6-7页)
: 一个游戏 脚色(Role)类别
: 剑士(SwordsMan)、魔法师(Magician) 则是继承了 Role类别的所有基本脚色该有的东西
: 也就是 SwordsMan is-a Role , Magician is-a Role
: 通常在Java 看到的实作剑士(SwordsMan)、魔法师(Magician)
: 通常都会这样写:(1)
: SwordsMan role1 = new SwordsMan();
: Magician role2 = new Magician();
: 但是,通常也会看到这样写:(2)
: Role role1 = new SwordsMan();
: Role role2 = new Magician();
: 我想请问的是这两种写法有什麽差别?
: 因为现在遇到看不懂的地方也包含
: 就我的认知是应该这样写
: ArrayList<Map<String,Object>> list
: = new ArrayList<Map<String,Object>>();
: 但是看到这 就不知道为什麽 可以这样写 用意何在?
: List<Map<String,Object>> list
: = new ArrayList<Map<String,Object>>();
: 就是想问说(1)与(2) 这样的写法 有什麽差别呢???
: (2) 的写法有什麽用意???
: 谢谢大家~
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.29.29.131