有三題名詞解釋的題目我不太會...有人能告訴我麼?
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
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⤋