Far*_*yev 6 c# oop polymorphism inheritance
我的朋友问我抽象方法是否可以有虚拟修饰符.我说,不.因为抽象方法也隐式也是虚方法,所以它不能具有虚拟修饰符.
但在阅读其中一篇MSDN文章时,我看到了这一点:
...如果虚拟方法被声明为abstract,则它仍然是从抽象类继承的任何类的虚拟方法.继承抽象方法的类无法访问方法的原始实现 - 在前面的示例中,类F上的DoWork无法在类D上调用DoWork.这样,抽象类可以强制派生类为虚方法提供新方法实现....
我无法正确理解第一句话.你能不能解释一下他们想说什么?
谢谢.
当您查看引用段落正上方的代码示例时,它会变得更清晰:
public class D
{
public virtual void DoWork(int i)
{
// Original implementation.
}
}
public abstract class E : D
{
public abstract override void DoWork(int i);
}
Run Code Online (Sandbox Code Playgroud)
虚方法D.DoWork继承E,并且声明为abstract.该方法仍然是虚拟的,它也刚刚变得抽象.
正确地说,抽象方法总是虚拟的.如果你的朋友仍然不相信,这里有一个官方报价:
抽象方法隐含地是虚方法.
| 归档时间: |
|
| 查看次数: |
1888 次 |
| 最近记录: |