C# virtual 虚函数应用实例

以下是核心代码

class A
{//原创来自 www.luofenming.com
    public virtual void Func() // 注意virtual,表明这是一个虚拟函数
    {
        Console.WriteLine("Func In A");
    }
}

class B : A
{
    public override void Func() // 注意override ,表明重新实现了虚函数
    {
        Console.WriteLine("Func In B");
    }
}

class C : B
{
}

class D : A
{
    public new void Func() // 注意new ,表明覆盖父类里的同名类,而不是重新实现
    {
        Console.WriteLine("Func In D");
    }
}
class Program
{
    static void Main(string[] args)
    {

        A a = new A();
        a.Func();    // 输出结果 Func In A

        A b = new B();
        b.Func();    // 输出结果 Func In B

        A c = new C();
        c.Func();    // 输出结果 Func In B

        A d = new D(); 
        d.Func();    // 输出结果 Func In A

        D d1 = new D();
        d1.Func(); // 输出结果 Func In D

        Console.ReadLine();
    }
}