Das ist keine abstrakte Klasse.
Code: Alles auswählen
type
TAbstractClass = class(TObject)
public
procedure Method; virtual; abstract;
end;
Das ist eine abstrakte Klasse. Eine Prozedurbody zu Method gibt es hierbei nicht. var AbstractClass : TAbstractClass; oder TAbstractClass.Create wird dabei schon mit einem Fehler quittiert. Das Ganze dient als Vorlage zu einer weiteren Klasse.
Code: Alles auswählen
type
TMyClass = class(TAbstractClass)
public
procedure Method; override;
end;
procedure TMyClass.Method;
begin
end;
Ein praktisches Beispiel? Hier bitte: Ich hab eine abstrakte QuickSort Klasse tSort in meiner Unit WolfUtil.pas erstellt. Die hat eine Methode Sort() mit dem Body des QuickSort Algorithmus. Außerdem hat sie die Methoden Compare() und Swap(), die beide abstract sind. Darauf baut eine Unit SortGrid.pas auf mit den Klassen TGridSort und TSortGrid. Dort ist definiert, wie die Zeilen eines TStringGrid verglichen und geswapt werden. Das ganze ist zu finden unter
http://www.Wolf-Fuerth.de/sortgrid.zip und enthält auch ein Demo Projekt mit sortierfähigem TStringGrid. Ich verwende diesen Code selbst in den Projekten CalPrint (
http://www.Wolf-Fuerth.de/calprint.src.zip, Delphi, Lazarus, Windows, Linux), TreeComp (
http://www.Wolf-Fuerth.de/treecomp.zip, Delphi ohne Quellcode) usw.