本文

1、建構式(Constructor)

  • 實體化類別的動作,也就是 New 這個步驟。
  • 建構式與類別同名,無 return 值。
  • 大話設計模式:其實就是對類別進行初始化。建構式與類別同名,無返回值,也不需要 void,在 New 時調用。
  1. Public class 特斯拉()
  2. {
  3. private 輪子(){}
  4. private 方向盤(){}
  5. private 電池(){}
  6. }
  7. 特斯拉 車子 = new 特斯拉(); //這樣我們就可以得到一輛車子並且知道車子具有輪子、方向盤、電池

2、多載(Overloading)

  • 相同 function 名稱,可以有不同參數或不同的型別。
  • 大話設計模式:多載提供了建立同名的多個方法的能力,但這些方法須使用不同的參數類型。
    2020/06/30 修改範例
  1. //首先建立一個特斯拉的類別。
  2. Public class 特斯拉
  3. {
  4. public void 配件() //預設基本配件有輪子、方向盤、電池。
  5. {
  6. private 輪子(){}
  7. private 方向盤(){}
  8. private 電池(){}
  9. }
  10. public void 配件(int 加購價 ) //加購價的配件會有更高級的配備。
  11. {
  12. private 跑車輪子(){}
  13. private 跑車方向盤(){}
  14. private 高電量電池(){}
  15. }
  16. }
  17. 特斯拉 ModelX = new 特斯拉();
  18. ModelX.配件(); //基本配件的ModelX
  19. ModelX.配件(10000); //透過加價一萬塊獲得更高級配件的ModelX
  20. //同一個ModelX都是使用配件這個方法,但我們透過傳入"空"或是"10000"來得到不同的配件。

這裡特別感謝同事幫忙指證,有興趣也歡迎去他的 Blog 晃晃伊果的沒人看筆記本

3、覆寫(Overriding)

  • 與父類別相同 function 名稱,參數個數與 return 型別相同。覆寫其繼承自父類別的功能內容,使其滿足子類別的需求。
  1. //首先建立一個特斯拉的類別,可以接收不同型號。
  2. Public class 特斯拉(string 型號)
  3. {
  4. public 輪子(){}
  5. public 方向盤(){}
  6. public 電池(){}
  7. public virtual void 車門() //要加上virtual才可以覆寫!
  8. {
  9. 傳統車門;
  10. }
  11. }
  12. //假設現在我們知道特斯拉的高級車款特殊地方在於車門是電動門,那我們就可以覆寫特斯拉這個類別。
  13. Public class 高級特斯拉(string 型號) : 特斯拉 //繼承特斯拉這個類別
  14. {
  15. public override void 車門()
  16. {
  17. 電動車門;
  18. }
  19. }
  20. 特斯拉 Model3 = new 特斯拉(Model3);
  21. 特斯拉 ModelS = new 特斯拉(ModelS);
  22. 高級特斯拉 ModelX = new 高級特斯拉(ModelX);

參考連結