您好,登錄后才能下訂單哦!
C# for Unity 編程語言快速入門教程(連載7)---C#OOP編程之多態性
C#的多態性本質上就是“一個方法實現多種功能”,為大中型項目開發提供便利性,起到大幅提高效率的目的。在C#的多態性上主要分為:“方法重載”與“方法覆蓋”兩種。
“方法重載”說的是一個方法,通過不同的“簽名”(即:不同的方法參數列表),實現不同的功能,從而避免了大量相似的功能需要不同的方法名。
“方法重寫"是指在具有繼承關系的父子類中,子類通過本功能實現不同功能的一種技術手段,目的是實現編程的靈活性。例如C#中Object 這個"根類"(即:通俗說就是“老祖宗”類,再也沒有上級類了)有一個ToString() 的方法,我們很多的項目類中,為了項目的實際需要常常“重寫”這個方法。
現就這一部分知識點,總結如下:
1: 方法重載 [靜態多態性]
1.1> 方法(函數)簽名
參數的數量
參數的類型
參數的順序
1.2>構造函數重載
2: 繼承關系下的方法重載(即重寫) [動態多態性]
2.1> 使用 virtual 與override 關鍵字.
A) 基類(即:父類)不為virtual 的方法,派生類不能使用override 進行重寫。
B) 假如派生類(即:子類)不用override 關鍵字來聲明方法,就不會覆蓋基類方法, 它只會成為和基類的方法完全不相關的另一個方法的實現。
2.2>使用 sealed/partial 關鍵字.
密封類表示不能繼承該類。
密封方法表示不能重寫該方法。可以覆蓋父類的密封方法,與父類中的方法是否為密封的沒有關系。
2.3> 關于方法重寫的部分規則總結
A): 不能重寫父類中的sealed方法.
B): 不能重寫父類中的static 方法.
C): 子類必須重寫父類中的抽象方法. [備注:“抽象方法”,筆者在下一篇進行詳細講解]
本部分的筆者提供以下編程題目,供C#初學者進行編程練習。
1: 利用多態性實現多功能計算器:
1) 定義方法名為computeMethod 的方法,實現加法器。
2) 再定義方法名為computeMethod 的方法,實現具備加減乘除綜合計算功能。
3) 在main 方法中調用以上方法,且測試。
2: 利用多態性實現如下功能。
1) 定義一個Father 類,利用構造方法的重載概念定義三個構造方法。
2) 定義Child 類繼承Father類,在Child的構造方法中分別調用父類不同的構造方法。
3: 設計一個基類,在其中創建方法MConvert,這個方法接受一個代表公里數的參數,將其轉換為對等的英里數之后,然后創建一個繼承此類的子類,增加可將輸入的公斤數轉換為磅的新方法 KConvert, 最后產生子類的實例對象, 測試這兩個功能。
提示信息:
1千米(公里) = 0.62英里
1千克(公斤) = 2.2磅
4: 調整上一題的內容,將其中的MConvert方法聲明為virtual, 然后在子類中進行覆寫,以其所接受的參數為正方形邊長,轉換為英里后計算其面積。
5:創建一個類,重寫ToString() 方法, 當其被引用的時候,能夠輸出此類對象的說明文字,如下:“測試用的myObject 類對象”
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。