为什么新的Modifier在将其隐藏在派生类后给我基类结果?

时间:2016-03-17 05:52:23

标签: c# modifiers

代码:

Status

根据'new'修饰符的定义:“new keyword显式隐藏了从基类继承的成员。” 然后当我们在派生类中使用new修饰符调用该方法时,它应该始终将输出赋予“Derived2 class”, 但我总是在所有三个条件下获得输出“基类”。

class Baseclass
{
    public void Fun()
    {
        Console.Write("Base class" + " "); 

    }
}

class Derived1 : Baseclass
{
    new void Fun()
    {
        Console.Write("Derived1 class" + " "); 

    } 

}
class Derived2 : Derived1 
{
    new void Fun()
    {
        Console.Write("Derived2 class" + " ");

    }
}

有人可以清楚我的怀疑吗?

2 个答案:

答案 0 :(得分:1)

它确实创建了正确的对象,但要访问其特定属性,您需要先将其强制转换。

答案 1 :(得分:1)

要获得预期的行为,必须在基类中将方法标记为虚拟,并在子类中覆盖它。 您将所有变量声明为基类类型,因此应该应用基类方法。