在c#中,继承,虚方法,与重写方法结合在一起才能实现多态性
虚方法是指允许其子类重新定义的方法的方法,在声明时,需要使用virtual修饰符, 不能是私有的
public virtual int add(int a,int b)
{
return a+b;
}
重写方法也称覆盖,是在派生类使用override修饰符重写基类带有virtual修饰符的虚方法
class Base()
{
public virtual string GetName()
{
return "父级名称";
}
}
calss SunClass:Base
{
public override string GetName()
{
return "子级名称";
}
}
例子:
class Program { static void Main(string[] args) { child_override co = new child_override(); Child_New cw = new Child_New(); Console.WriteLine("v_m方法重写结果1:" + co.v_m()); Console.WriteLine("v_m方法隐藏结果1:" + cw.v_m()); Console.WriteLine("c方法隐藏结果1:" +cw.m()); Parent pco = co as Parent; Parent pcw = cw as Parent; Console.WriteLine("v_m方法重写结果2:" + pco.v_m()); Console.WriteLine("v_m方法隐藏结果2:" + pcw.v_m()); Console.WriteLine("c方法隐藏结果2:" + pcw.m()); Console.Read(); } } public class Parent { public string m() { return "一个方法"; } public virtual string v_m() { return "一个虚方法"; } } public class child_override : Parent { public override string v_m() { return "重写虚方法"; } } public class Child_New : Parent { public new string m() { return "隐藏一般方法"; } public override string v_m() { return "隐藏虚方法"; } }