一个抽象方法,接口,标记为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();
}
}
这类的两个方法成为重载方法