本文

1、建構式(Constructor)

  • 實體化類別的動作,也就是 New 這個步驟。
  • 建構式與類別同名,無 return 值。
  • 大話設計模式:其實就是對類別進行初始化。建構式與類別同名,無返回值,也不需要 void,在 New 時調用。
Public class 特斯拉()
{
	private 輪子(){}
	private 方向盤(){}
	private 電池(){}
}

特斯拉 車子 = new 特斯拉(); //這樣我們就可以得到一輛車子並且知道車子具有輪子、方向盤、電池

2、多載(Overloading)

  • 相同 function 名稱,可以有不同參數或不同的型別。
  • 大話設計模式:多載提供了建立同名的多個方法的能力,但這些方法須使用不同的參數類型。
    2020/06/30 修改範例
//首先建立一個特斯拉的類別。
Public class 特斯拉
{
	public void 配件() //預設基本配件有輪子、方向盤、電池。
	{
		private 輪子(){}
		private 方向盤(){}
		private 電池(){}
	}  

	public void 配件(int 加購價 ) //加購價的配件會有更高級的配備。
	{
		private 跑車輪子(){}
		private 跑車方向盤(){}
		private 高電量電池(){}
	}
}

特斯拉 ModelX = new 特斯拉();
ModelX.配件(); //基本配件的ModelX
ModelX.配件(10000); //透過加價一萬塊獲得更高級配件的ModelX

//同一個ModelX都是使用配件這個方法,但我們透過傳入"空"或是"10000"來得到不同的配件。

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

3、覆寫(Overriding)

  • 與父類別相同 function 名稱,參數個數與 return 型別相同。覆寫其繼承自父類別的功能內容,使其滿足子類別的需求。
//首先建立一個特斯拉的類別,可以接收不同型號。
Public class 特斯拉(string 型號)
{
	public 輪子(){}
	public 方向盤(){}
	public 電池(){}
	public virtual void 車門() //要加上virtual才可以覆寫!
	{
		傳統車門;
	}
}

//假設現在我們知道特斯拉的高級車款特殊地方在於車門是電動門,那我們就可以覆寫特斯拉這個類別。

Public class 高級特斯拉(string 型號) : 特斯拉 //繼承特斯拉這個類別
{
	public override void 車門()
	{
		電動車門;
	} 

}

特斯拉 Model3 = new 特斯拉(Model3);
特斯拉 ModelS = new 特斯拉(ModelS);
高級特斯拉 ModelX = new 高級特斯拉(ModelX);

參考連結