作者cateran (云川闲步)
看板Soft_Job
标题Re: [请益] 多型用在哪
时间Thu Mar 4 12:13:13 2021
你这个例子来讲
measure()的引数就是Cup型别
所以宣告变数c的型别必须是Cup
至於为什麽measure()不放在Cup里面
是因为如果所有Cup的使用者都把他们要的method
放在Cup里面 很快Cup就会变一大包,造成维护困难
※ 引述《empireisme (empireisme)》之铭言:
: 如题
: 看了stackoverflow的一个例子
: class Cup {
: int capacity
: }
: class TeaCup : Cup {
: string flavour
: }
: class CoffeeCup : Cup {
: string brand
: }
: Cup c = new CoffeeCup();
: public int measure(Cup c) {
: return c.capacity
: }
: 他的解释是
: you can pass just a Cup instead of a specific instance. This aids in
: generality because you don't have to provide a specific measure() instance
: per each cup type
: 问题是我不是只要
: 在Cup 类别中定义 measure这个方法 不就可以了吗
: 为何不要在宣告物件的时候都
: 使用
: CoffeeCup c= new CoffeeCup();
: 请问多型的用途是?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 72.70.46.113 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1614831195.A.6C4.html
1F:推 empireisme: 推喔 03/04 12:16
2F:→ wulouise: measure的主词不会是cup,表示非cup的责任 03/04 21:13
3F:→ wulouise: 重点在责任归属,一大包通常是责任归属不明确的结果 03/04 21:14