討論區快速選單
知識庫快速選單
傑米的攝影旅遊筆記 Top1安全軟體開發知識-CSSLP 政府補助!資策會APP就業班
[ 回上頁 ] [ 討論區發言規則 ]
OOP 中對 "多型" 的理解
更改我的閱讀文章字型大小
作者 : linfox(linfox)
[ 貼文 7 | 人氣 3929 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/10/27 上午 03:54:19
前面說多了(都是癈話吧). 現在到我問了.

我不太理解這個 " 多型 " 是什麼東東 ??

請教訓一下我吧..
作者 : enetsmail(Nets)
[ 貼文 107 | 人氣 2715 | 評價 260 | 評價/貼文 2.43 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/10/28 上午 01:28:24
建議你善用搜尋器,真的滿好用的,找資料很好找
我隨便打,就跑出一大堆
http://www.javaworld.com/javaworld/javatips/jw-javatip30.html
去參考看看
作者 : xman(XMAN)
[ 貼文 43 | 人氣 17 | 評價 100 | 評價/貼文 2.33 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/6/5 上午 01:01:27
建議你買本書來看看.
都會寫到多型...
入門書的錢不能省.
作者 : younger(新手上路)
[ 貼文 20 | 人氣 2294 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/10/31 上午 12:00:02
多型就是
使用同一個function名稱(virtual function),在執行時期卻可呼叫起不同的function
這是我的理解,如有錯,請指教

virtual function的詳細運作機制,查書比較清楚囉!
作者 : murpphy(Killer)
[ 貼文 80 | 人氣 522 | 評價 440 | 評價/貼文 5.5 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/1 下午 05:37:06
多型是物件導向機制中一個很重要的《物件結構化》觀念。

一般在OOA、OOD的過程中,會發展出一些功能或範疇相近的類別,它們有類似的行為與功能,但卻不適合塞近同一個類別中。這時為了規範開發原則,常會利用一個介面或基礎類別來延伸這些子類別,以強制這些子類別有完全一樣的屬性與方法,達到規格最佳化的目的。

以微軟資料庫元件ADO為例,它的後瑞支援多種不同的資料庫引擎,但VB、.NET程式設計師在引用這些物件時,不同的資料庫卻用相同的程式設計方法即可,這就是多型。

背後的差異己完全封裝在物件中。
作者 : demo999(DEMO999) Java優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 632 | 人氣 29373 | 評價 3840 | 評價/貼文 6.08 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/7 下午 12:55:37
>>以微軟資料庫元件ADO為例,它的後瑞支援多種不同的資料庫引擎,但VB、.NET程式設計師在引用這些物件時,不同的資料庫卻用相同的程式設計方法即可,這就是多型。
-----------------------------------------
不好意思 , 您說的大概應該都對 ,
可是在Design Patterns 中 , 對於ADO 物件對於不同的資料庫用相同的程式設計方法 ,
就ADO的架構 看起來應該不是這樣.....
作者 : murpphy(Killer)
[ 貼文 80 | 人氣 522 | 評價 440 | 評價/貼文 5.5 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/13 下午 02:32:22
可能我對ADO的架構不是很熟,不過如果它不是用多型的patterns,應該是用何種方式來實作,以達到用同一物件access不同後端呢?
作者 : demo999(DEMO999) Java優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 632 | 人氣 29373 | 評價 3840 | 評價/貼文 6.08 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/13 下午 02:59:27
ADO 架構請參閱
http://www.dbmaker.com.tw/reference/tools/ado-sgml/ado1.html

為何它不是多型...
請描述出多型的定義???
多型的表現是以method 為單位或是以class為單位???


在這世上 , 我不知道永遠比我知道的多
如果我說的不夠精確 , 請原諒我


作者 : murpphy(Killer)
[ 貼文 80 | 人氣 522 | 評價 440 | 評價/貼文 5.5 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/13 下午 03:33:19
我從不會認為誰對誰錯,那沒什麼意義,畢竟真理是愈辯愈明,更何況錯了也沒什麼了不起,誰不在學習中。

多型當然以class為單位,OLE DB就是一組microsoft的標準COM component的介面,任何資料庫廠商都可以根據這個interface提供自已的provider,用來支援ADO。

而ADO則根據這個OLE DB介面呼叫任何廠商所開發的類別庫,提供統一的介面給client程式。

這樣不知算不算多型。
作者 : demo999(DEMO999) Java優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 632 | 人氣 29373 | 評價 3840 | 評價/貼文 6.08 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/13 下午 08:38:42
這位前輩 , 我也贊同您的說法 , 沒有誰對誰錯的問題...

作者 : studentjason(Jason)
[ 貼文 21 | 人氣 2662 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/2/3 上午 10:57:01
多形應該是觀念上的字眼..
而非程式作法上的區分!!
作者 : jykuo(kjy)
[ 貼文 19 | 人氣 1 | 評價 100 | 評價/貼文 5.26 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/3/4 下午 10:09:50
polymorphism在 OOP, OOD, OOA 有一些不同

polymorphism 一般定義為 一個樣子有好多個實做方式

OOP 有 static polymorphism和 dymanic polymorphism
overloading 為 static polymorphism
同一個 class 的一個 operation有好多個 method 實做
可以事先知道使用哪一個實做

overridding 為 dymanic polymorphism
無法事先知道使用哪一個 method

>多形應該是觀念上的字眼..
>而非程式作法上的區分!!
作者 : razor(舞)
[ 貼文 104 | 人氣 797 | 評價 690 | 評價/貼文 6.63 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/3/11 下午 10:43:28
多型應該是指同樣的方法,讓不同的類別/物件來操作時,會進行不同的行為. 比較簡單的例子是,三角形與方形都繼承形狀類別,因此都有draw方法,但三角形的draw方法與方形的draw方法表現不同.

在生物學的polymorphism是指同種(請回想界門鋼目科屬種的那個種)的動物存在著二個或更多種型式的個體. 在化學上是指同樣的化學組成存在著多種型式的結晶.

在物件導向程式方面的解釋: (http://cdict.giga.net.tw/?query=polymorphism)
In object-oriented programmin}, the term is used to describe a variable that may refer to objects whose class is not known at compile time and which respond at run time according to the actual class of the object to which they refer.
在執行時才根據實際的類別決定該物件方法的行為.
作者 : beeok(sayhong)
[ 貼文 19 | 人氣 0 | 評價 30 | 評價/貼文 1.58 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/10/10 上午 12:28:25
請教訓一下我吧..
好!教訓一下你…哈哈

多型的意思就是多種型態(廢話)
就是說他在遇到一個事情時
擁有先分辨他
然後以不同方式去處理他

以JAVA而言
就是在同一個CLASS底下
有著二個以上同名的method

舉個例子而言…
class 看見人來了{
   SeemSomeone(警察){
     落跑();
  }
  SeemSomeone(正妹){
     搭訕();
  }
  SeemSomeone(阿婆){
     扶她過街();
  }
}
作者 : pantc328(好說) C#優秀好手貼文超過500則人氣指數超過10000點
[ 貼文 895 | 人氣 14154 | 評價 3390 | 評價/貼文 3.79 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/10/12 下午 05:22:44
你這個在.net 好像叫多載,多形我不知如何用口頭說明,打個比方,我們有看過一種遊戲,一群人打來打去,敵軍的 E1...En,換我軍打 M1....Mn 假如所有的角色都一樣如
class 騎士{
public void 攻擊(){
}
}
這樣你可以產生 M1...Mn 的騎士 放在List 裡在用回圈一各各取出來,然後呼叫攻擊,但角色不同那,你就要用多型的方式如:
interface 攻擊性角色{
void 攻擊();
}

class 騎士:攻擊性角色{
public void 攻擊(){
}
....
....
....
}

class 弓箭手:攻擊性角色{
public void 攻擊(){
}
....
....
....
}

class 戰士:攻擊性角色{
public void 攻擊(){
}
....
....
....
}

List<攻擊性角色> 我方=List<攻擊性角色>();
然後
List.Add(new 騎士());
List.Add(new 弓箭手());
List.Add(new 戰士());

然後你一個個用攻擊性角色取出,執行攻擊,他就會執行 騎士.攻擊(),弓箭手.攻擊(),戰士.攻擊(),

作者 : azrael0079(az)
[ 貼文 5 | 人氣 1 | 評價 50 | 評價/貼文 10 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/7/5 下午 05:32:49
我個人觀點:
beeok 說的例子(看到警察or正妹or阿婆會有不同的反應) 這個不是多型
pantc328 說的遊戲角方攻擊的例子才是多型

beeok的例子,這只是編譯器提供的一個方便的功能罷了,好處是寫程式很直覺很方便
但這不是多型
想想看,對同名的function定義不同的參數型態,對人而言似乎是一樣的function執行不一樣的工作,好像是什麼了不起的事,但對編譯器而言卻是不同的function執行不同的工作,不同function執行不同工作本來就天經地義

pantc328說的例子很容易懂
想想看,如果照pantc328說的方法定義人物角色及攻擊方式,寫完程式發行遊戲,好像一時也看不出好處,真的到目前為止一點好處也沒有,但是 如果一年後遊戲出二代,出新的角色 "有翼人",這時候之前的程式不用改,還是用 ((所有角色都繼承的父類別)某特定物件).攻擊(); 就ok了。加入新的角色,舊程式還是把它視為它的父類別,所以還是可以延用舊程式。這才是多型的好處
作者 : jonay(jonay) VC++優秀好手C++ Builder優秀好手C++優秀好手貼文超過500則
[ 貼文 887 | 人氣 8025 | 評價 5030 | 評價/貼文 5.67 | 送出評價 30 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/7/5 下午 06:18:35
我也要舉一個例子(未成年的不要看)
"做愛"是一種行為(動作)
一個男人要XX看到對方是一個女人,他通常會用前面
但是對方是一個男人,他可能會用後面
這樣叫多載(對像不同行動不同),不要多形

但是祖父-父-孫
都聽到要XX時
父->提槍快跑前進
孫->毛都沒長齊,還是算了
祖父->可能二小時後才舉起來
雖然都是人,但是年紀不同(階層),產生的行為不同
 板主 : Clark
 > 物件導向程式設計 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 物件導向程式設計 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
物件導向程式設計
1 Arthur 180 
2 藍色LED 150 
3 長長 100 
4 Linkin 100 
5 love seeker 100 
6 Raymond 90 
7 Nets 80 
8 nop 70 
9 Huah 70 
10 矇矇 60 
物件導向程式設計
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2014 程式設計俱樂部 http://www.programmer-club.com.tw/
0.109375