这里是来自MSDN的一些代码:
// compile with: /target:library
public class D
{
public virtual void DoWork(int i)
{
// Original implementation.
}
}
public abstract class E : D
{
public abstract override void DoWork(int i);
}
public class F : E
{
public override void DoWork(int i)
{
// New implementation.
}
}
有人可以解释一下上面的代码,关于抽象方法和虚拟方法之间的区别吗?
DoWork()
方法是可选的,适用于它的所有直接子类/子类。上面的代码添加了一个中间抽象类E,强制对Class-E的所有子类重写Class-D的DoWork()
方法-从根本上防止Class-E的所有子类使用Grandpa-Class-D的DoWork()
。换句话说:隐藏了Class-D的DoWork()
实现,这样Class-F就必须(以及它的所有兄弟类)各自形成自己的自定义实现DoWork()
。 - MikeTeeVee