在C#中,virtual
关键字用于修饰方法、属性、索引器或事件声明,使得它们可以在派生类中被重写。使用virtual
修饰符的方法称为虚拟方法。
当一个方法被声明为virtual
时,它允许任何继承它的类重写该方法。这意味着派生类可以提供自己的实现版本。如果派生类没有重写虚拟方法,则调用该方法时,将执行基类中的实现。
这里有一个简单的示例来演示virtual
方法的使用:
using System;
public class BaseClass
{
public virtual void Display()
{
Console.WriteLine("Display Base Class");
}
}
public class DerivedClass : BaseClass
{
public override void Display()
{
Console.WriteLine("Display Derived Class");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass bc = new BaseClass();
bc.Display(); // 输出: Display Base Class
DerivedClass dc = new DerivedClass();
dc.Display(); // 输出: Display Derived Class
BaseClass bcdc = new DerivedClass();
bcdc.Display(); // 输出: Display Derived Class,展示多态性
}
}
在这个示例中,BaseClass
有一个虚拟方法Display
,它在DerivedClass
中被重写。当通过DerivedClass
的实例调用Display
方法时,将执行DerivedClass
中的重写版本。此外,由于BaseClass
的引用bcdc
实际上指向DerivedClass
的一个实例,调用bcdc.Display()
时也会执行DerivedClass
中的重写版本,这展示了多态性的一个方面。