代码:
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" + " ");
}
}
有人可以清楚我的怀疑吗?
答案 0 :(得分:1)
它确实创建了正确的对象,但要访问其特定属性,您需要先将其强制转换。
答案 1 :(得分:1)
要获得预期的行为,必须在基类中将方法标记为虚拟,并在子类中覆盖它。 您将所有变量声明为基类类型,因此应该应用基类方法。