2017年8月28日 星期一

C#] 利用 interface(介面) abstract(抽象) override(覆寫) inherit(繼承) demo



[Ref]


來源:
  1. (原創) interface和abstract class有何不同? (C/C++) (.NET) (C#)
  2. [C#] abstract 和 virtual 函數的差異




  1. 建立一個abstract的Door類別,裡面有Open(開門)與Close(關門)這兩個虛擬方法可以用

     
  2. 建立一個HorizontalDoor類別,它繼承了原先的Door,所以它也有Open與Close這兩個方法可以用

     
  3. 建立一個VerticalDoor類別,它也繼承了Door,可是我在裡面override了原先的Open與Close,另外實作其方法

     
  4. 建立一個IAlarm介面,裡面定義了Alert這個方法

     
  5. 建立一個Alarm類別,它繼承了IAlarm,並在裡面實作Alert

     
  6. 建立一個AlarmDoor類別,它繼承了Door,同時在裡面使用了Alarm類別的Alert方法

     
  7. 建立一個AutoAlarmDoor類別,它繼承了AlarmDoor,並覆寫了原本的Open方法,裡面呼叫base.Open方法並接著呼叫Alert方法

     
  8. 建立一個DoorController類別,這個類別是用來控制管理所有的Door

     
  9. 完成 !!

     
  10. 執行結果
    2016-09-07 23_06_31-file____C__Users_Minsheng_Desktop_ConsoleApplication_Door_ConsoleApplication_Doo

  • 注意事項
    1. abstract method 不會有程式內容
    2. abstract method 繼承後,一定要 override
    3. virtual method 一定要有程式內容
    4. 宣告為 virtual 的 method,繼承後才可以進行 override
    5. 設定為 virtual 的 method,沒有一定要 override

沒有留言:

張貼留言