在C#面向對象編程中,重寫方法和重載方法是兩個重要的概念,但我們有時會混淆這些概念,甚至一些參考書和網絡上都弄錯,現在對這兩種概念澄清一下。
1.重載方法
在C#中,重載方法是指在類中有兩個或兩個以上的方法,但各個方法的參數類型、參數個數或順序不同,例如下面類中定義了add方法並重載:
class Addition
{
public int add(int x)
{
return x + x;
}
public int add(int x, int y)
{
return x + y;
}
public float add(float x, float y)
{
return x + y;
}
public float add(int x, float y)
{
return x + y;
}
}
注意:在重載方法時,方法的簽名不能相同,否則會出錯。
2.重寫方法
在C#中,如果一個實例方法的聲明中含有override修飾符,則該方法稱爲重寫方法,重寫方法用相同的方法簽名覆蓋所繼承的虛方法或抽象方法,例如下面的繼承類重寫了基類的靜態方法與虛方法:
public abstract class Teacher
{
public abstract void Name();
public virtual void Address()
{
Console.WriteLine("這是基類的虛方法!");
}
}
public class Myteacher:Teacher
{
public override void Name()
{
Console.WriteLine("重寫基類的抽象方法!");
}
public override void Address()
{
Console.WriteLine("重寫基類的虛方法!");
}
}