繁体   English   中英

下面的多级继承如何在 .Net5 中工作?

[英]How is the below multilevel inheritance working in .Net5?

  1. 在图像部分 1 中,中间类ClassA继承了ClassASuper,但没有覆盖Display方法,而是在子子类ClassB 中覆盖它,并且它似乎按预期工作。
  2. 在图像部分 2 中,中间类ClassA继承了ClassASuper并覆盖了Display方法,该方法在子子类ClassB 中也进一步被覆盖,并且它似乎也按预期工作。
  3. 在Image section 3 中,中间类ClassA继承了ClassASuper并隐藏了Display方法,该方法在子子ClassB 中进一步被覆盖,似乎是矛盾的。 -->有人可以解释一下这是如何在幕后工作的吗?

在此处输入图片说明

在 Section3 中,新的Display方法隐藏了从基类继承的方法。 它是新的继承层次结构的起点。 在这方面,它与具有另一个名称的全新方法没有任何区别。 你可以这样写:

public virtual void NewDisplay()
{
   ...
}

并在ClassAClassB覆盖这个。

因此, ClassASuper类型的变量不会看到这个新方法,因为它没有覆盖或实现原始方法。 由于ClassASuper.Display没有被覆盖,它确实正确显示

从 ClassASuper 打印

如果要使用新方法,则必须ClassAClassA (或ClassB ):

((ClassA)classASuperA).Display();
((ClassA)classASuperB).Display();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM