作者:
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();
: 請問多型的用途是?
作者:
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
推這篇
作者:
wulouise (在線上!=在電腦前)
2021-03-04 21:17:00屬性繼承是多行的好處跟壞處之一大部分的情況interface會比繼承好,繼承改的人要很小心
作者: lee457088 2021-03-04 23:37:00
現在的學森都馬學爬說語 Python,沒人在學爪哇惹
作者:
tnfshjcc (↖煞气a攜阿攜↘)
2021-03-05 01:11:00Python也有Polymorphism呀
作者:
NCUking (中大王)
2021-03-05 11:53:00果然是非本科版
多型不就同一界面 裡面可替換不同實做 用虛擬函數先定義函數格式 然後繼承的在各自實做 我都用C這樣寫用函數指標模擬虛擬函數 用組合模擬繼承說是基礎 但很多人不會這樣寫
作者: newhandfun (新手方) 2021-03-07 00:24:00
一堆本科沒上過物件導向好不好,別裝了
作者:
k20057 (kk)
2021-03-07 14:35:00這是c#不是java吧
本科沒上過OOP路過 後來面試被問爆 才翻完一本C#教學