本文
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);