本篇擷取重點:
一、多載 (Overload)
多載(Overloading)在寫作程式時,是一個非常實用的觀念。當我們在設計函式時,我們會設想可能帶入的參數,並設計呼叫函式時必須帶入這些參數,同時取得我們需要的回傳值。但是常常在不同的情況下,即使是呼叫同一個函式,我們需要帶入的參數或需要取得的回傳值型態也可能會不同,這時候就可以運用多載的寫法。
簡單來講:
在「同類別」中或在「父、子類別」中「方法名稱」可相同
→「引數的型別、數目不同」,呼叫後「結果」是不同。
參考網站:
https://blog.xuite.net/jane17512001/PenguinDesign/116288111-%E5%A4%9A%E8%BC%89%28Overloading%29
舉個例子來說:
假設 BMath 類別繼承 AMath 類別,將來比較兩個整數叫大值的 GetMax()方法置於 AMath 父類別中定義,將使用整數陣列來找出元素最大值的GetMax()方法置於 BMath 子類別中定義。在Page_Load()方法中分別呼叫這兩個 GetMax()方法。
首先一樣,為了方便從網頁上看出結果輸出差異,故先在(.aspx)設置一個Label作輸出接口,如下圖
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="message" runat="server" Text=""></asp:Label>
</div>
</form>
</body>
將處理取兩整數中最大值的GetMax()方法置於 AMath父類別中定義。
class AMath
{
public int GetMax(int num1,int num2) //丟入的是兩個整數
{
if(num1>num2)
{return num1;}
else
{return num2;}
}
}
建立一個屬於 AMath 類別的 aMath 物件實體,呼叫 AMath 類別的 GetMax 方法
message.Text += "父類別(AMath)方法示範區<br>";
AMath aMath = new AMath();
int a = 1;
int b = 3;
int aMathMax = aMath.GetMax(a, b);
message.Text += aMathMax + "<br><hr>";
網頁呈現
將處理取整數陣列中最大值的GetMax()方法置於BMath子類別中定義。(BMath 繼承 AMath 類別)
class BMath:AMath // BMath 繼承 AMath 類別
{
public int GetMax(int[] num) //丟入的是整數陣列
{
int max = num[0];
for(int i=1;i<num.Length;i++)
{
if(num[i]>max)
{max = num[i];}
}
return max;
}
}
建立一個屬於 BMath 類別的 bMath 物件實體,分別呼叫
message.Text += "子類別(BMath)方法示範區<br>";
BMath bMath = new BMath();
int a = 1;
int b = 3;
int[] c = {1,3,5,7,9};
int bMathMax_a = bMath.GetMax(a, b);
int bMathMax_b = bMath.GetMax(c);
message.Text += "父類別中定義的GetMax方法,丟入兩整數<br>";
message.Text += bMathMax_a + "<br><hr>";
message.Text += "子類別中定義的GetMax方法,丟入一整數陣列<br>";
message.Text += bMathMax_b + "<br><hr>";
網頁呈現