作者elements (元素)
看板Soft_Job
标题Re: [请益] 多型用在哪
时间Thu Mar 4 16:30:25 2021
本鲁 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();
: 请问多型的用途是?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 50.35.84.213 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1614846627.A.236.html
1F:推 YahooTaiwan: 这麽基础的东西也可以引起讨论串,屌!! 03/04 17:35
2F:→ allexj: 有时候越基础的都要经过讨论才发现自己并没有搞清楚过 03/04 18:06
3F:推 mercurycgt68: 哪有基础 一堆 PHP 工程师一辈子没搞懂过 还会说「 03/04 18:09
4F:→ mercurycgt68: 工作中根本不需要用到什麽设计模式」 03/04 18:09
5F:推 IamTD: 这才是多型阿...面试的时候10个大概只有1个有办法回答 03/04 18:26
6F:→ IamTD: 我相信很多人工作是不需要用到的...程度不到那边 不会用到 03/04 18:26
7F:推 ronald0000: 推这篇 03/04 18:38
8F:推 del680202: 这不是学生还没毕业就该了解的基本概念吗... 03/04 19:29
9F:推 ucrxzero: 了解的定义是什麽我再跟你讨论 03/04 19:46
10F:推 wulouise: 属性继承是多行的好处跟坏处之一 03/04 21:17
11F:→ wulouise: 大部分的情况interface会比继承好,继承改的人要很小心 03/04 21:18
12F:推 lee457088: 现在的学森都马学爬说语 Python,没人在学爪哇惹 03/04 23:37
13F:推 tnfshjcc: Python也有Polymorphism呀 03/05 01:11
14F:推 Firstshadow: 这不是大一计程c++的东西ㄇ == 03/05 02:00
15F:推 mmonkeyboyy: 讲是这样讲 有时再回头看看旧的东西也不错啊@_@~ 03/05 02:52
16F:推 NCUking: 果然是非本科版 03/05 11:53
17F:→ shooter555: 多型不就同一界面 里面可替换不同实做 用虚拟函数先定 03/05 12:31
18F:→ shooter555: 义函数格式 然後继承的在各自实做 我都用C这样写 03/05 12:32
19F:→ shooter555: 用函数指标模拟虚拟函数 用组合模拟继承 03/05 12:55
20F:→ shooter555: 说是基础 但很多人不会这样写 03/05 13:02
21F:→ newhandfun: 一堆本科没上过物件导向好不好,别装了 03/07 00:24
22F:→ k20057: 这是c#不是java吧 03/07 14:35
23F:推 s37166117: 本科没上过OOP路过 後来面试被问爆 才翻完一本C#教学 03/09 04:45