虚拟函数主要特征,就是该函数有virtual修饰符,用于它们可以在派生类中被重写。 例如,此方法可被任何继承它的类重写。
using System;
namespace VirtualMethodTest
{
class A
{
public virtual void fun() // 注意virtual,表明这是一个虚拟函数
{
Console.WriteLine("A");
}
}
class B : A // 注意B是从A类继承,所以A是父类,B是子类
{
public override void fun() // 注意override ,表明重新实现了虚函数
{
Console.WriteLine("B");
}
}
class C : B // 注意C是从A类继承,所以B是父类,C是子类
{
}
class D : A // 注意B是从A类继承,所以A是父类,D是子类
{
public new void fun() // 注意new ,表明覆盖父类里的同名类,而不是重新实现
{
Console.WriteLine("D");
}
}
class program
{
static void Main()
{
A a = new A();
B b = new B();
C c = new C();
D d = new D();
a.fun();
b.fun();
c.fun();
d.fun();
D d1 = new D();
d1.fun();
Console.ReadLine();
//运行结果A B B D D;
}
}
}