【发布时间】:2016-04-16 16:45:05
【问题描述】:
我只是找不到令人满意的解释。所以我认为在 SO 上发布这个会有所帮助。
当我们合并method hiding and overriding in C# ?时会发生什么
下面的例子:
class BaseClassA
{
public virtual void showMessage()
{
Console.WriteLine("In BaseClass A ");
}
}
class DerivedClassB : BaseClassA
{
public override void showMessage()
{
Console.WriteLine("In DerivedClass B ");
}
}
class DerivedClassC : DerivedClassB
{
public new void showMessage()
{
Console.WriteLine("In DerivedClass C");
}
}
class Program
{
static void Main(string[] args)
{
BaseClassA a = new BaseClassA();
a.showMessage();
a = new DerivedClassB();
a.showMessage();
BaseClassA b = new DerivedClassC();
b.showMessage();
Console.ReadKey();
}
}
我正在理解
的输出 BaseClassA b = new DerivedClassC();
b.showMessage();
这是我对 C# 中 new 和 override 的理解
New - 它隐藏了基类方法。因此,即使基类引用变量指向派生类对象,如果派生类隐藏了方法,输出也将只是基类输出。
Override - 它覆盖了基类方法。因此,即使基类引用变量指向派生类对象,如果该派生类覆盖该方法,输出也将是派生类输出。
但是在这里,BaseClassA 引用变量如何指向DerivedClassC 对象并打印DerivedClassB 的输出?
请用简单的话解释一下。
【问题讨论】:
标签: c# .net overriding method-hiding