Re: [请益] 多型用在哪

楼主: elements (Helianthus annuns)   2021-03-04 16:30:25
本鲁 OO 不太好
但你这例子多型吗
这就只是子类别继承父类别的属性吧
多型比较像这样吧
class DataLoader {
protected virtual string GetData() {
//..
}
public string Process() {
// ...
string data = GetData();
// ...
}
}
class NetworkLoader: DataLoader {
protected override string GetData() {
// get from network...
}
}
class FileLoader: DataLoader {
protected override string GetData() {
// get from file...
}
}
DataLoader loader = networkEnabled ? new NetowrkLoader() : new FileLoader();
string processedData = loader.Process();
让子类别作他擅长的部份
父类别程式码部分重用并且隐藏子类别的实作细节
函数只要能够接受父类别的实体
所以使用父类别的函数也可以重用
要扩充只需要继承父类别并且实作部分方法
※ 引述《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();
: 请问多型的用途是?
作者: YahooTaiwan (超可爱南西我老婆)   2021-03-04 17:35:00
这么基础的东西也可以引起讨论串,屌!!
作者: allexj (Allex)   2021-03-04 18:06:00
有时候越基础的都要经过讨论才发现自己并没有搞清楚过
作者: mercurycgt68 (发芽的吉它手)   2021-03-04 18:09:00
哪有基础 一堆 PHP 工程师一辈子没搞懂过 还会说“工作中根本不需要用到什么设计模式”
作者: IamTD (TD)   2021-03-04 18:26:00
这才是多型阿...面试的时候10个大概只有1个有办法回答我相信很多人工作是不需要用到的...程度不到那边 不会用到
作者: ronald0000 (ron)   2021-03-04 18:38:00
推这篇
作者: del680202 (HANA)   2021-03-04 19:29:00
这不是学生还没毕业就该了解的基本概念吗...
作者: ucrxzero (RX-0)   2021-03-04 19:46:00
了解的定义是什么我再跟你讨论
作者: wulouise (在线上!=在电脑前)   2021-03-04 21:17:00
属性继承是多行的好处跟坏处之一大部分的情况interface会比继承好,继承改的人要很小心
作者: lee457088   2021-03-04 23:37:00
现在的学森都马学爬说语 Python,没人在学爪哇惹
作者: tnfshjcc (↖煞气a携阿携↘)   2021-03-05 01:11:00
Python也有Polymorphism呀
作者: Firstshadow (IamCatづミ'_'ミづ)   2021-03-05 02:00:00
这不是大一计程c++的东西ㄇ ==
作者: mmonkeyboyy (great)   2021-03-05 02:52:00
讲是这样讲 有时再回头看看旧的东西也不错啊@[email protected]~
作者: NCUking (中大王)   2021-03-05 11:53:00
果然是非本科版
作者: shooter555 (shooter)   2021-03-05 12:31:00
多型不就同一界面 里面可替换不同实做 用虚拟函数先定义函数格式 然后继承的在各自实做 我都用C这样写用函数指标模拟虚拟函数 用组合模拟继承说是基础 但很多人不会这样写
作者: newhandfun (新手方)   2021-03-07 00:24:00
一堆本科没上过物件导向好不好,别装了
作者: k20057 (kk)   2021-03-07 14:35:00
这是c#不是java吧
作者: s37166117 (ace)   2021-03-09 04:45:00
本科没上过OOP路过 后来面试被问爆 才翻完一本C#教学

Links booklink

Contact Us: admin [ a t ] ucptt.com