Re: [问题] 以父类别宣告然后以子类别的建构子new

楼主: yoll522 (幽灵)   2014-07-19 00:42:33
※ 引述《qrtt1 (愚人)》之铭言:
: ※ 引述《jb0802 (james)》之铭言:
: : 还有一点问题~~所以再发另一篇文~~
: : 这样与使用 自来也 n = new 自来也(); 所做出来的物件n应该和
: : 忍者 n = new 自来也(); 这两个应该是一样的n吧
: : 会有什么不一样的地方吗?
: : 另外,如果两者一样,我个人的习惯是 当然是把他宣告成 自来也 n=new 自来也();
: : 因为这样不是让自己比较清楚它是自来也吗?
: : 有些自来也有且忍者没有的方法,我也会记得它可以被拿来叫用。
: : 另外一个问题,会使用这样的原因是因为父类别有abstract的方法
: : 在子类别给实作了才会有这样的宣告吗?
: 是一样啊, 不过不够抽象化
: 当任务来的时候需要任务编组
: Team {
: 医疗忍者 m;
: 忍者 n;
: 队长 o;
: 自来也 p;
: }
: 医疗忍者需 实作 interface "治疗" { 施展治疗忍术(); }
: =======================================================
: 每次你要组个 Team 自来也都要到, 他怎么有时间写小说呢 XD
: 而且这样的设计是不是表示, 没有自来也 Team 就不完整了呢?
: Team {
: 医疗忍者 m = new 小樱();
: 忍者 n = new 鸣人();
: 队长 o = new 卡卡西();
: }
: Team {
: 医疗忍者 m = new 小樱();
: 忍者 n = new 鸣人();
: 队长 o = new 自来也();
: }
: Team {
: 医疗忍者 m = new 纲手();
: 忍者 n = new 自来也();
: 队长 o = new 飞猿();
: }
: 只要型别对了, 自来也可以出现在任何位置, Team 的安排也能很自由
: 不会因为少了自来也而不能组 Team
不好意思,推了一个2008年的古文@@
这两天在学java也遇到了同样的问题,虽然全部回文都看完了,却还是有点疑问存在
我想请问说,既然我写程式的人都知道说我就是要用自来也,
那为什么我就不要直接写 自来也 n = new 自来也(); 呢?
看了上述的任务边组的例子后还是有点不懂,
如果说现在要组一个team
Team {
医疗忍者 m = new 纲手();
忍者 n = new 自来也();
队长 o = new 飞猿();
}
就好像说,我都知道钢手要当医疗忍者了,也知道飞猿要当队长
那为什么写程式时不就干脆写成
Team {
钢手 m = new 纲手();
自来也 n = new 自来也();
飞猿 o = new 飞猿();
}
这样呢?
如果忍者这父类别有一个abstract的招换术需要子类去定义他
那继承忍者的所有类别,都一定会去定义招换术不是吗?
那既然继承的子类都定义了,那么所有的方法也都可以安心使用不是吗@@?
就像前面的文章所说的
忍者 n = new 自来也();
忍者 m = new 纲手();
n.招唤术(); // 文太出现了
m.招唤术(); // 蜗蝓出现了
因为自来也、钢手都是继承忍者的,所以他们肯定会定义招换术,那么程式写成
自来也 n = new 自来也();
钢手 m = new 纲手();
n.招唤术(); // 文太出现了
m.招唤术(); // 蜗蝓出现了
这样也没错不是吗@@?
拜托各位帮忙解除小弟的疑问,谢谢大家
作者: LPH66 (-6.2598534e+18f)   2014-07-19 00:44:00
当你要把自来也给别人用时就不一定了别人只知道他拿到一个忍者, 但是叫他用招唤术还是会出现文太
作者: putumaxally (putumaxally)   2014-07-19 01:34:00
应该是对了
作者: jtorngl (Pedrosa go!)   2014-07-19 17:43:00
List<忍者> ninjas = getNinja(String[] nids);你应该不会想用instanceof去检查instance的实际型别
作者: luoqr (.....)   2014-07-19 18:51:00
照你的宣告法 如果你要同时操作很多Team 那肯定写的很丑或是Team里有个大绝招需要三个角色合体完成的话 就会不好写
楼主: yoll522 (幽灵)   2014-07-20 19:13:00
我明白了,谢谢各位的解说

Links booklink

Contact Us: admin [ a t ] ucptt.com