C#重载和重写

技术博客 (261) 2023-12-26 09:01:01

什么是重写(override)?

“重写”是指“覆盖在某物之上”=“覆盖”。这是一个与继承密切相关的功能。

重写应重新定义父类方法。当您要更改继承的类中父方法的处理时使用。

public class Sample
{
  public virtual void Test()
  {
    // 处理A
  }
}

class Sample2 : Sample
{
  public override void  Test()
  {
    // 处理B
  }
}

在上述情况下,由于Sample2类继承了Sample类,因此您可以访问Sample类的Test方法。通过在具有这种关系的类中声明与覆盖相同类型和名称的功能,可以覆盖处理内容。当进程被覆盖时,在Sample2类中调用Test方法时,将执行处理B而不是处理A。
可以参考下面的实例:

public class Sample
{
    public virtual void Test()
    {
        Debug.Log ("111");
    }
}

public class Sample2 : Sample
{
    public override void Test()
    {
        base.Test();
        Debug.Log ("222");
    }
}

这时出力的结果为“222”而不是“111”。这样,重写可以重新定义您不想继承的方法或要在继承的类中更改的方法。重写的本意是“建立父子关系”。


什么是重载(Overload)?
重载意味着“超载”。此方法允许您使用相同的名称定义多个成员方法。与重写不同,其中同一事物(结构不同但名称相同的事物)存在于同一基础上。
重载是重载同名的方法和运算符。具有相同名称但参数输入模式多种的方法,

并且可以执行算术运算和使用“ +”进行字符连接。

class Sample
{
  void Test(int A)
  {
    // 处理A
  }

  void Test (string B)
  {
    // 处理B
  }
}

在上述情况下,同一类中有两个Test方法。通常,您不能使用相同的名称定义方法,但是如果类型和参数不同,则可以使用相同的名称声明方法。
在这种情况下,两个方法都存在并且可以被调用。(重载)


总结:
•重写= 重新定义
•重载 = 超载

THE END

发表回复