Und was bewirkt das zusätzliche class und static?
Klassenmethoden sind solche die auf der klasse, nicht auf deren objekte angewandt werden.
Du brauchst also zum aufruf keine instanz der klasse zu erzeugen:
Delphi-Quellcode:
Type
TAsimpleclass = Class
Private
Procedure Dosomething;
End;
Tclasswithclassmethod = Class
Private
Class Procedure Dosomething;
End;
// Implementation normaler aufruf
Procedure TAsimpleclass.Dosomething;
Begin
Writeln('Helloworld');
End;
{ Beispiel klassenmethode: }
Class Procedure Tclasswithclassmethod.Dosomething;
Begin
Writeln('Helloworld');
End;
Procedure Main_simple;
Var
Asimpleobject: TASimpleclass;
Begin
Asimpleobject := TASimpleclass.Create;
// object instance der klasse TASimpleclass
Asimpleobject.Dosomething;
Asimpleobject.Free;
End;
Procedure Main_classmember;
// var Asimpleobject:TASimpleclass; //wird nicht mehr benötigt, da wir auf der Klasse operieren
Begin
// Asimpleobject:=TASimpleclass.create; //object instance der klasse TASimpleclass
Tclasswithclassmethod.Dosomething;
// direkter aufruf über den Klassennamen und die class procedure
// Asimpleobject.free;
End;
Begin
Main_simple;
Main_classmember;
End.
Erläuterung für static members:
https://ibeblog.com/2010/08/18/delphi-static-members/