作者jb0802 (james)
看板java
标题Re: [问题] 以父类别宣告然後以子类别的建构子new
时间Tue Mar 4 09:01:57 2008
※ 引述《qrtt1 (愚人)》之铭言:
: ※ 引述《jb0802 (james)》之铭言:
: : 想请问在网路上看到或书上看到的code~~常常有这样的情形
: : Parent p = new son();
: : 父类别 子类别
: : Map m = new HashMap();
: : Link l = new LinkedList();
: : 我知道m和l虽然宣告为父亲的,但是是可以使用儿子的方法。
: : 其实应该就是一个儿子的物件,但这样与
: : HashMap = m = new HashMap();
: : LinkedList l = new LinkedList();
: : 这样宣告有什麽分别,会有特别的情况需要使用上者吗
: : 或者纯粹只是程式的可读性,因为只需用到父类别的方法,所以没必要宣告成子类别
: 忍者 n = new 自来也();
: 忍者 m = new 纲手();
: n.招唤术(); // 文太出现了
: m.招唤术(); // 蜗蝓出现了
: ==============================
: 这就是抽象化, 不管子类怎麽实作
: 对於父类知道有招唤术即可.
: 你并不用指挥某一个忍者要招唤什麽 (他也不一定会(实作))
: 只要有东西出来就好 XD
还有一点问题~~所以再发另一篇文~~
这样与使用 自来也 n = new 自来也(); 所做出来的物件n应该和
忍者 n = new 自来也(); 这两个应该是一样的n吧
会有什麽不一样的地方吗?
另外,如果两者一样,我个人的习惯是 当然是把他宣告成 自来也 n=new 自来也();
因为这样不是让自己比较清楚它是自来也吗?
有些自来也有且忍者没有的方法,我也会记得它可以被拿来叫用。
另外一个问题,会使用这样的原因是因为父类别有abstract的方法
在子类别给实作了才会有这样的宣告吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.118.155.150
1F:推 jaw109:virtual table? 03/04 21:41