【发布时间】:2014-03-18 10:58:40
【问题描述】:
我正在尝试用子类中的虚拟方法覆盖抽象类中的抽象方法。我(假设直到现在?)理解抽象方法和虚拟方法之间的区别。
显然我做不到,但我的问题是……为什么?根据接受的答案here 和以下场景,我只是没有看到问题:
public abstract class TopLevelParent
{
protected abstract void TheAbstractMethod();
}
public class FirstLevelChild1 : TopLevelParent
{
protected override void TheAbstractMethod()
{
}
}
public class FirstLevelChild2 : TopLevelParent
{
protected virtual override void TheAbstractMethod()
{
//Do some stuff here
}
}
public class SecondLevelChild : FirstLevelChild2
{
//Don't need to re-implement the method here... my parent does it the way I need.
}
所以很明显,我所做的是有一个顶级父级,它有两个继承的子级和另一个继承自其中一个的类。同样,基于我在上面发布的链接中接受的答案:
"一个虚函数,基本上就是说看,这里是功能 这对儿童班来说可能不够好,也可能不够好。所以如果是 足够好,使用这个方法,如果没有,然后覆盖我,并提供 您自己的功能。”
而且二级子级会从父级继承虚方法,从而满足最顶层父级抽象方法的实现要求……有什么问题?
我在某处遗漏了一些细节,阻碍了我对此的理解......
【问题讨论】:
-
您遇到的具体错误是什么?
-
标记为覆盖的成员“WindowsFormsApplication.Form1.FirstLevelChild2.TheAbstractMethod()”不能标记为新的或虚拟的
标签: c# inheritance virtual abstract