English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

有三題名詞解釋的題目我不太會...有人能告訴我麼?

What is polymorphism? Explain with an example?

what is Inheritance?Explain with an example?

what is difference between constructor and destructor

2006-08-04 05:12:30 · 3 個解答 · 發問者 Waiting 1 in 電腦與網際網路 程式設計

嗯...
我只大概知道polymorphism 叫作多元性
inheritance叫做繼承
在程式設計裡的功能跟定義都不太了...

2006-08-04 06:03:01 · update #1

3 個解答

polymorphism 多型.
inheritance 繼承

polymorphism 多型

  多型是一個讓單一介面用在一般性動作的功能。特定的工作取決於狀況的實際性質。更具體的說,多型的概念常以一句話來解釋:「一個介面,多個方法」。這代表有可能可以設計一個通用的介面給一組相關動作。這因為讓相同的介面用於指定一般的分類而降低複雜度有幫助。選擇特定的動作(也就是方法)應用於各種情況是編譯器的工作。身為程式設計師的你,不需要手動去選擇。你只需要記住和應用通用的介面即可。

  例如,父類別(Super Class)中有一個名叫做 show() 的方法,用來顯示學生的姓名資料,次子類別中也有一個名叫 show() 的方法,用來顯示學生的成績資料,這二個方法都稱為 show(),但作法上不同,程式碼也不同,次子類別的 show() 方法將蓋掉父類別的 show() 方法,這就是多型的運作方法。

inheritance 繼承

  繼承是一個物件得到另一個物件特性的過程。這點非常重要,因為它支援了階層式分類的觀念。大部份的知識是以階層式(也就是由上而下)的分類法而可管理。例如,獵犬在分類中屬於狗的一種,換句話說也是哺乳頹的一種,而哺乳類是隸屬於一個更大的類別動物之下。如果沒有階層,每個物件就必須明確地定義自己所有的特性。但是,利用繼承,物件只需要定義那些在它的類別中特有的屬性。它可以從它的父層繼承共有的屬性。因此,是繼承這個機制才能讓一個物件成為一個較一般性案例中的特例。

  繼承也會與封裝相互作用。如果一個類別封裝了每些屬性,任何子類別就會有相同的屬性再加上另外它特有的部份。這是讓物件導向程式的複雜度成線性成長而非幾何成長的關鍵觀念。一個新的子類別繼承其所有前代的所有屬性。它不會與系統中其他大多數的程式碼有無法預期的交互影響。

  有繼承的關係後,父類別 (Super class) 中的資料 (Data) 或方法 (Method) 在次子類(Subclass)就可以繼承使用,次子類別的次子類別也可以繼承使用,最後即能達到資料重覆使用的目的。


物件導向技術最重要精神與價值就是「一般化」
:generic, genericity, general, generialization.

「一般化」使我們的程式碼,不論是做為 conatiners(負責資料結構,
以及對資料結構的操作),或是做為 algorithms(泛用型或自用型),
都可以處理各種不同型別 -- 甚至是目前未存在的型別 -- 的資料。

(當然,沒有人能夠保證自己的設計完善到一定能夠支援未來可能的
各種資料型別。為目前已知的各種型別提供一個共同(一般化)介面,
是比較可能做到的目標。系統的演化有賴回饋與調校。)

「一般化」技術表示在「多型」polymorphism 身上。

傳統的 polymorphism,是由 virtual functions 完成,那當然就
離不開 inheritance。換言之,polymorphism 的前提是 inheritance。
是的,polymorphism 涵蓋 inheritance!

2006-08-04 10:48:46 · answer #1 · answered by Kevin 2 · 0 0

多型就像上面講的, 只是一般化的技巧而已, 無聊的很!

程式語言有所謂的型別這個概念, 是讓我們更具體的看待事物!
但同時他也是一種限制, 讓我們太依賴具體, 所以要有某些方法, 來破除限制, 多型只是其中一項!

polymorphism, generic, constraints, type class, type inference ....
等都只是提供不同程度的 "具體化" or "一般化" 的技巧而已, 讓你可以隨心所欲遊走其間, 遊刃有餘 (如果你真的懂的話 :P)

2006-08-04 11:40:09 · answer #2 · answered by ? 2 · 0 0

先把你認為這些是什麼說出來吧?
讓我們知道你了解到那裡,好作解答…

2006-08-04 05:58:45 · answer #3 · answered by Dave 7 · 0 0

fedest.com, questions and answers