最近在看一本書《你必須知道的.net》,書涵蓋的內容比較多,對於c#,.net平台以往所學的零散東西有了慢慢的總結和新的認識。把一些程式設計客棧基礎的東西記錄於此。
先說說多型吧:
1.基類繼承式多型
如書中所說,基類繼承式多型的關鍵是繼承體系的設計與實現。書中舉了個簡單的列子
複製** **如下:
files myfile=new wordfile();
myfile.open();
myfile是乙個父類files變數,保持了指向子類wordfile例項的引用,然後呼叫乙個虛方法open,具體的呼叫則決定於執行時而非編譯時。從設計模式的角度看,基類繼承式多型體現了一種is-a方式,例如wordfile is-a files就體現在這種繼承關係中。
2.介面實現式多型
www.cppcns.com 區別於基類的繼承方式,這種多型通過實現介面www.cppcns.com的方法約定形成繼承體系,具有更高的靈活性。從設計模式的角度來看,介面實現多型體現了一種can-do關係。上述的檔案載入器也可以這樣實現
複製** **如下:
myrxk; ifileopen myfile=new wordfile();
myfile.open();
多型的執行機制:
從技術實現角度看,是.net的動態繫結機制成就了物件導向的多型特性。靜態繫結在編譯期就可以確myrxk定關聯,一般是以方法過載來實現的;動態繫結則在執行期通過檢查虛擬方法表來確定動態關聯覆寫的方法,一般以繼承和虛方法實現。
本文標題: c#基礎學習之多型
本文位址:
C 基礎之多型
多型分為靜態多型和動態多型。靜態多型分為函式過載和泛型程式設計。動態多型是通過虛函式來實現的。靜態多型 叫靜態繫結或早繫結 編譯器在編譯期間完成的,編譯器可以根據函式實參的型別 可能會進行隱式的型別轉換 注意 巨集不是靜態多型,巨集是在預處理階段完成的動態多型 又叫動態繫結或者晚繫結 在程式執行期間...
c 基礎之 多型
c 物件導向的三大特徵 虛函式 是在基類中使用關鍵字 virtual 宣告的函式。在派生類中重新定義基類中定義的虛函式時,會告訴編譯器不要靜態鏈結到該函式。我們想要的是在程式中任意點可以根據所呼叫的物件型別來選擇呼叫的函式,這種操作被稱為動態鏈結,或後期繫結。多型是由虛函式實現的,而虛函式主要是通過...
C 學習之多型
多型性是物件導向程式設計中的乙個重要特徵,利用多型性可以設計和實現乙個易於拓展的系統。在c 語言中,多型性是指具有不同功能的函式可以用同乙個函式名,這樣就可以用乙個函式名呼叫不同內容的函式,發出同樣的訊息被不同型別的物件接收時,導致完全不同的行為。多型性通過聯編實現。聯編是指乙個電腦程式自身彼此關聯...