虚方法与重写方法

在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 "隐藏虚方法";
        }

    }
原文地址:https://www.cnblogs.com/zhang123/p/2990855.html