C#虚拟方法 dodo

2.3 虚拟方法
使用virtul定义该方法为虚拟方法。

2.3.1 方法的重定义
使用override关键字,将一个虚拟的方法重定义。
这里注意。方法的隐式隐藏,使用new显示隐藏。
隐藏只是子类里面的将父类隐藏,但是,不影响父类的方法。
class A
{
      public method(){}
}

class B : A
{
      public method(){}
}
A aClass = new A();
aClass.method();//调用A中的method()
A aClass = new B();
aClass.method();//调用A中的method()
B bClass = new B();
bClass.method();//调用B中的method()
B bClass = new A();//编译无法通过
//////////////////////////////////////////////////////////
class A
{
      public virtual method(){}
}

class B : A
{
      public override method(){}
}
A aClass = new A();
aClass.method();//调用A中的method()
A aClass = new B();
aClass.method();//调用B中的method()
B bClass = new B();
bClass.method();//调用B中的method()
B bClass = new A();//编译无法通过

原文地址:https://www.cnblogs.com/zgqys1980/p/836118.html