Der Vorteil besteht darin, das man die Methoden implementieren muss.
@BUG : das ist kapitaler Denk-Bug.
"implementieren" würde ich an dieser Stelle auf deutsch als "umsetzen" bezeichnen. Oder "mit Leben erfüllen". Abstrakte Methoden zeichnen sich aber genau dadurch aus, dass sie nicht konkret vorhanden sind. Sie sind lediglich
deklariert. Was wiederum heisst : es wurde ein Name vergeben für etwas, das nicht vorhanden, besser gesagt
noch nicht umgesetzt ist. Denkt man jetzt, die Methode wäre bereits "implementiert", die ist es aber nicht, dann kommt "abstrakter Fehler", sofern man die benutzen will.
Deshalb mein Vorschlag, die Methode als leeren Rumpf zur Verfügung zu stellen und nicht nur zu deklarieren. Unterschied ist :
virtual; abstract
und
virtual;
machen beide nichts, was nicht implementiert ist. Kommt "abstract" zusätzlich ins Spiel, dann wird wie gesagt, nichts gemacht, ausser zusätzlich eine Fehlermeldung zu produzieren.