相关疑难解决方法(0)

抽象函数和虚函数有什么区别?

抽象函数和虚函数有什么区别?在哪些情况下建议使用虚拟或抽象?哪一个是最好的方法?

oop programming-languages virtual-functions abstract

1526
推荐指数
11
解决办法
58万
查看次数

用虚拟方法覆盖抽象方法

我试图在子类中使用虚方法覆盖抽象类中的抽象方法.我(假设到现在?)了解抽象方法和虚方法之间的区别.

显然我无法做到,但我的问题是......为什么?基于此处接受的答案和以下场景,我只是没有看到问题:

    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.
    }
Run Code Online (Sandbox Code Playgroud)

所以,我所做的就是让一个顶级父级有两个继承子级,另一个继承自其中一个继承子级.同样,根据我在上面发布的链接中接受的答案:

"一个虚函数,基本上就是说看,这里的功能对于子类来说可能是也可能不够好.所以如果它足够好,使用这个方法,如果没有,那么覆盖我,并提供你自己的功能. "

并且第二级子级将从其父级继承虚拟方法,从而满足其最顶层父级的抽象方法的实现要求......问题是什么?

我错过了某些阻碍我对此理解的细节......

c# virtual inheritance abstract

6
推荐指数
1
解决办法
1216
查看次数