在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("重写基类的虚方法!");
}
}