Also : "abstract"
darf in der Basisklasse nicht implementiert werden. Es ist wie der Name schon sagt abstrakt. Vorerst also ohne konkrete Bedeutung. In abgeleiteten Klassen kann sich das ändern.
Nun habe ich allerdings keine Lust etwas eventuell überflüssiges zu programmieren. Deshalb verwende ich jetzt nur "virtual", um die Grundlage der Vererbung zu schaffen. Die Basisklasse wird also schon für einen konkreten Zweck gefüllt und kann bei Bedarf überschrieben werden.
"abstract" ist eher was für Komponentenentwickler, die beim besten Willen nicht wissen können, was später daraus wird. Da geht es mehr oder weniger nur darum, den Namen einer Methode zu reservieren.
Nun aber, was ist mit "override"