什么是重写(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方法。通常,您不能使用相同的名称定义方法,但是如果类型和参数不同,则可以使用相同的名称声明方法。
在这种情况下,两个方法都存在并且可以被调用。(重载)
总结:
•重写= 重新定义
•重载 = 超载