Tho*_*mar 12
virtual
如果你真的想要override
子类中的方法,你需要关键字.否则,基本实现将被新实现隐藏,就像您使用new
关键字声明它一样.
通过"覆盖"它们而没有声明基本方法来隐藏方法virtual
会使您没有多态性,这意味着:如果您将专用版本"转换"为"基本"版本并调用方法,则始终使用基类实现被覆盖的版本 - 这不是你所期望的.
例:
class A
{
public void Show() { Console.WriteLine("A"); }
}
class B : A
{
public void Show() { Console.WriteLine("B"); }
}
A a = new A();
B b = new B();
a.Show(); // "A"
b.Show(); // "B"
A a1 = b;
a1.Show(); // "A"!!!
Run Code Online (Sandbox Code Playgroud)