Virtual方法(虚方法)
virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况:情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法。
情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法。
示例:
//使用基类引用访问派生类对象时,得到的是基类的成员。虚方法可以使基类的引用访问“升至”派生类内。
//使用基类引用调用派生类(derived class)的方法,只需满足下面的条件。
//1.派生类的方法和基类的方法有相同的前面和返回类型。
//2.基类的方法使用virtual标注。
//3.派生类的方法使用override标注。
//使用注意
//1.复写和被复写的方法必须有相同的可访问性。换一种说法,被复写的方法不能是private等,而复写的方法是public
//2.不能复写static方法或非虚方法。
//3.方法、属性和索引器,已经另一种成员类型事件,都可以被声明为virtual和override。
class MyBaseClass
{
public virtual void Print()
{
Console.WriteLine("MyBaseClass");
}
}
class MyDerivedClass : MyBaseClass
{
public override void Print()
{
Console.WriteLine("MyDerivedClass");
}
}
class Program
{
static void Main(string[] args)
{
MyDerivedClass dreived = new MyDerivedClass();
MyBaseClass mybc = dreived;
dreived.Print();
mybc.Print();
Console.ReadLine();
}
}