iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0

本篇擷取重點:

  1. 多載 (Overload) 是什麼

一、多載 (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>";

網頁呈現
https://ithelp.ithome.com.tw/upload/images/20190917/20120056BNegRpwh88.jpg


將處理取整數陣列中最大值的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 物件實體,分別呼叫

  • 其繼承的 AMath 類別的 GetMax 方法
  • 自己 BMath 類別修改的 GetMax 方法
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>";

網頁呈現

https://ithelp.ithome.com.tw/upload/images/20190917/20120056PAb4Qn52RF.jpg

參考資料:
https://ecourse.nutn.edu.tw/public/public_getfile.ashx?syear=104&term=2&cour_no=124008&type=course_textbook&filename=1042124008_828BCFEF.ppt&org_filename=ch4.ppt (大推薦)



上一篇
[ASP.NET] [C#] 物件導向 - 繼承者們,線上看 XDD
下一篇
[ASP.NET] 網頁常用物件-初淺談Page物件
系列文
ASP.NET Web Form 入門30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言