【发布时间】:2014-02-27 08:33:41
【问题描述】:
当我添加新关键字或删除内容时,行为方式相同! new 关键字应该是重新实现基类的方法并将其隐藏,这是示例:
class Program
{
static void Main(string[] args)
{
BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass();
BaseClass bcdc = new DerivedClass();
Console.WriteLine("bc __________________");
bc.Method1();
bc.Method2();
Console.WriteLine("dc __________________");
dc.Method1();
dc.Method2();
Console.WriteLine("bcdc __________________");
bcdc.Method1();
bcdc.Method2();
Console.ReadLine();
}
}
class BaseClass
{
public void Method1()
{
Console.WriteLine("Base - Method1");
}
public void Method2()
{
Console.WriteLine("Base - Method2");
}
}
class DerivedClass : BaseClass
{
public new void Method1()
{
Console.WriteLine("Derived - Method1");
}
public void Method2()
{
Console.WriteLine("Derived - Method2");
}
}
bcdc 的输出将显示 基础 - 方法 1 调用 bcdc.Method1() 时;它不应该显示“Derived - Method1”吗,如果不是这样,请向我解释原因。 (当使用 Virtual/override 时,它工作得很好,我很满意)但是使用 new 关键字,无论有没有它,它都可以正常工作。
【问题讨论】:
标签: c# .net inheritance overriding new-operator