Abstrakte Methoden müssen immer auch als virtual (bzw. dynamic) deklariert werden. Dadurch legt Delphi dann auch einen Eintrag in der Virtual Method Table der Klasse an. Dieser Eintrag zeigt dank des abstract Keywords erstmal auf eine generische Funktion, die nichts macht, außer den Abstract-Error zu schmeißen, den du ja schon kennengelernt hast
Erst durch überschreiben ersetzt du den Zeiger in der VTable durch deine eigene Methode in der abgeleiteten Klasse.