C#forUnity快速入門(連載7)-C#多態性

 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 類對象”

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章