c# 覆盖\重写\重载

一个抽象方法,接口,标记为virtual的方法,你在派生类中去实现,或者改写他的功能,叫重写

在父类中定义了一个方法如: public string GetName(){ return "Name"}方法,在派生类中再次定义了一个同样的方法public string GetName(){ return "Value"}  则派生类覆盖了父类的方法

覆盖重写的区别:

重写:
    public class C1
    {
        public virtual string GetName()
        {
            return "Name";
        }
    }

    public class C2:C1
    {
        public override string GetName()
        {
            return "Value";
        }
    }

C1 c1 = new C2();

label1.Text = c1.GetName();  //子类已经重写了父类,输出为子类的值Value


   public class C1
    {
        public  string GetName()
        {
            return "Name";
        }
    }

    public class C2:C1
    {
        public new  string GetName()
        {
            return "Value";
        }
    }

C1 c1 = new C2();
label1.Text = c1.GetName();  //子类已经仅覆盖了父类,父类的GetName方法仍在,这样调用的是父类的GetName方法,输出为Name


重载是指在一个类中同名,但是参数列表不相同的方法组

如:
public class Test
{
   public string GetName(string key)
   {
        return key;
   }

   public string GetName(int key)
   {
       return key.ToString();
   }
}

这类的两个方法成为重载方法

原文地址:https://www.cnblogs.com/nikyxxx/p/2209059.html