Substituindo um método abstrato por um método virtual

Estou tentando substituir um método abstrato em uma classe abstrata por um método virtual em uma classe filho. Eu (presumido até agora?) Entendo a diferença entre métodos abstratos e virtuais.

Obviamente eu não sou capaz de fazer isso, mas minha pergunta é ... por quê? Com base na resposta aceitaaqui e no cenário a seguir, simplesmente não vejo o problema:

    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.
    }

Então, obviamente, o que eu fiz é ter um pai de nível superior com dois filhos herdados e outra classe herdada de um deles. Novamente, com base na resposta aceita no link que eu postei acima:

"Uma função virtual é basicamente dizer" olha, aqui está a funcionalidade que pode ou não ser boa o suficiente para a classe filho. Portanto, se for boa o suficiente, use esse método, caso contrário, substitua-me e forneça sua própria funcionalidade. " "

e que o filho de segundo nível herdará o método virtual de seu pai, satisfazendo, assim, o requisito de implementação do método abstrato de seu pai principal ... qual é o problema?

Estou perdendo alguns detalhes em algum lugar que está dificultando minha compreensão disso ...

questionAnswers(2)

yourAnswerToTheQuestion