c#基礎(chǔ)學(xué)習(xí)之多態(tài)
最近在看一本書《你必須知道的.Net》,書涵蓋的內(nèi)容比較多,對于c#,.Net平臺以往所學(xué)的零散東西有了慢慢的總結(jié)和新的認(rèn)識。把一些基礎(chǔ)的東西記錄于此。
先說說多態(tài)吧:
1.基類繼承式多態(tài)
如書中所說,基類繼承式多態(tài)的關(guān)鍵是繼承體系的設(shè)計與實現(xiàn)。書中舉了個簡單的列子
Files myFile=new WORDFile();
myFile.open();
myFile是一個父類Files變量,保持了指向子類WORDFile實例的引用,然后調(diào)用一個虛方法Open,具體的調(diào)用則決定于運行時而非編譯時。從設(shè)計模式的角度看,基類繼承式多態(tài)體現(xiàn)了一種IS-A方式,例如WORDFile IS-A Files就體現(xiàn)在這種繼承關(guān)系中。
2.接口實現(xiàn)式多態(tài)
區(qū)別于基類的繼承方式,這種多態(tài)通過實現(xiàn)接口的方法約定形成繼承體系,具有更高的靈活性。從設(shè)計模式的角度來看,接口實現(xiàn)多態(tài)體現(xiàn)了一種CAN-DO關(guān)系。上述的文件加載器也可以這樣實現(xiàn)
IFileOpen myFile=new WORDFile();
myFile.open();
多態(tài)的運行機制:
從技術(shù)實現(xiàn)角度看,是.NET的動態(tài)綁定機制成就了面向?qū)ο蟮亩鄳B(tài)特性。靜態(tài)綁定在編譯期就可以確定關(guān)聯(lián),一般是以方法重載來實現(xiàn)的;動態(tài)綁定則在運行期通過檢查虛擬方法表來確定動態(tài)關(guān)聯(lián)覆寫的方法,一般以繼承和虛方法實現(xiàn)。
相關(guān)文章
使用revit api畫垂直于風(fēng)管的風(fēng)管示例
這篇文章主要介紹了使用revit api畫垂直于風(fēng)管的風(fēng)管示例,需要的朋友可以參考下2014-03-03漢字轉(zhuǎn)拼音軟件制件示例(漢字轉(zhuǎn)字母)
這篇文章主要介紹了c#漢字轉(zhuǎn)拼音的方法,但不能判斷多音字,大家可以參考修改使用2014-01-01將excel數(shù)據(jù)轉(zhuǎn)換成dataset示例
這篇文章主要介紹了不借助第三方插件的情況下將Excel中的數(shù)據(jù)轉(zhuǎn)換成DataSet的方法,需要的朋友可以參考下2014-02-02