【发布时间】:2014-10-17 19:42:23
【问题描述】:
我的朋友问我 abstract 方法是否可以有 virtual 修饰符。我说,不。 因为,抽象方法隐含也是虚拟方法,它不能有修饰符 virtual。
但是在阅读one of the MSDN articles时,我看到了这个:
... 如果一个 virtual 方法被声明为 abstract,它对任何人来说仍然是虚拟的 类继承自抽象类。继承一个类 抽象方法无法访问原始实现 方法——在前面的例子中,类 F 上的 DoWork 不能调用 DoWork 在 D 类上。这样,抽象类可以强制派生类 为虚拟方法提供新的方法实现......
我无法正确理解第一句话。你能解释一下他们想说什么吗?
谢谢。
【问题讨论】:
-
第一句只是意味着
abstract关键字在“虚拟性”方面没有任何改变,即该方法仍然是virtual,即它仍然会表现出多态性。 -
@BartoszKP 在阅读了 Heinzi 的回答和您的评论后,我明白了。谢谢。
-
@EricLippert 感谢您的链接。这真的很明智。也很有趣。
标签: c# oop inheritance polymorphism