RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 
 18  2/2  <  1  2 


 
主題: [轉貼] 什麼是多型的解釋   字型大小:||| 
jocosn
白銀驢友
等級: 15等級: 15等級: 15等級: 15等級: 15


今日心情

 . 積分: 1386
 . 精華: 2
 . 文章: 2945
 . 收花: 9537 支
 . 送花: 3671 支
 . 比例: 0.38
 . 在線: 1295 小時
 . 瀏覽: 19041 頁
 . 註冊: 7237
 . 失蹤: 1239
#16 : 2005-4-20 07:39 PM     只看本作者 引言回覆


引用:
Acute寫到:

引用:
jocosn寫到:
我的程式碼是因為看不小神童在問什麼,所以用到 OVERLOADING,完全是個錯誤的範例,造成誤解請見諒。


呵, 我都沒問啥阿, 我只是說, 那個描述是有問題的, 如此而已哩

Acute.


就是因為沒問啥,所以不知道要答啥?



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
Acute
論壇第一大毒王
等級: 18等級: 18等級: 18等級: 18等級: 18
論壇第一小神童

 . 積分: 3281
 . 精華: 8
 . 文章: 11574
 . 收花: 14037 支
 . 送花: 3260 支
 . 比例: 0.23
 . 在線: 323 小時
 . 瀏覽: 2250 頁
 . 註冊: 8000
 . 失蹤: 5353
#17 : 2005-4-20 11:13 PM     只看本作者 引言回覆


引用:
Acute寫到:

引用:
jocosn寫到:
那應該怎麼改才對?


2. 多型在程式編譯時期利用判斷訊息參數的類型與個數來決定運作的方法。

應該這樣子, 比較合理 ^^"

Acute.


忘了說, 上面的說法, 是為了彰顯原文這方面的描述不太對勁, 所以, 才會寫上 "XX時期"

就語言定義而言, 基本上, 很少會去描述一個動作應該怎樣做, 也就是, 語言定義裏面, 頂多是寫成 (甚至於很可能不寫, 因為沒必要規定作法):
多型利用判斷訊息參數的類型與個數來決定運作的方法。

實際上如何實作, 則由製作compiler 的人去根據合適的方法達到目標

補述:
通常會出現"結果論" 或"推測論", 都是由其他介紹相關語言之書籍的作者寫進去的.
所謂結果論, 是指, 根據某個或大多數compiler 作法, 而把該作法加入語言介紹中, 變成一個雖然沒錯, 但是不適當的描述.
所謂"推測論", 也是其他人寫語言介紹書時寫進去的, 但是, 因為該作者可能根本不懂compiler 該怎麼做, 只好胡思亂想隨便猜. 個人推測(我也在亂猜), 原文的第二點, 就是作者的"推測"結果, 只是, 該推測結果, 是無法做到的, 呵

一般而言, 真要了解一個語言, 要直接看語言定義的書籍, 這種書, 通常只有一本(俗稱:Bible), 而且, 是由語言定義者直接撰寫出來的. 以C 而言, 就是K&R 親手撰寫的The C programming language. 以C++ 而言, 就是The C++ programming language. (作者我忘了是誰) 用這種書籍當學習語言的入門會很辛苦, 因為書籍的目的是詳盡的介紹語言, 而不是教導如何學習該語言, 但是, 當你真想學好一個語言, 你就是必須花過一次時間, 把bible 仔細研讀一次, 這樣子, 你才能真正了解該語言, 並且不會被曾經看過的書誤導.

Acute.



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
ecity
鍛鐵驢友
等級: 7等級: 7等級: 7


 . 積分: 82
 . 精華: 2
 . 文章: 456
 . 收花: 175 支
 . 送花: 0 支
 . 比例: 0
 . 在線: 0 小時
 . 瀏覽: 0 頁
 . 註冊: 7994
 . 失蹤: 6592
#18 : 2005-5-17 05:01 PM     只看本作者 引言回覆

看了各位大大的討論, 小弟也來發表一下自己的拙見.

1. Polymorphism
    一個Object可以在Runtime時轉換為不同的Class Type(即其Implement的Interface及Super Class), 而其真正的Type是其被instance化時的Class. 通常會在開發比較底層的程式時會用到許多這方面的技巧(例如:Framework), 而Design Pattern內也大量運用這種觀念.

2. Overloading
    一個Method具有同名稱但是可以傳入不同型態的變數, 例如Java的System.out.println即是一個Overloading的標準例子.

3. Overriding
    當subclass繼承super class時, 為了能有不同的行為, 此時會改寫super class的Method, 但構成Overriding的條件是要相同名稱, Argument List及Return Type.



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

 18  2/2  <  1  2 
   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-4-20 09:45 PM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.016788 second(s), 6 queries , Qzip disabled