In Delphi ist eine Methode eine Prozedur oder Funktion, die eine Operation für ein Objekt ausführt. Eine Klassenmethode ist eine Methode, die eine Klassenreferenz anstelle einer Objektreferenz verarbeitet.
Wenn Sie zwischen den Zeilen lesen, werden Sie feststellen, dass auf Klassenmethoden auch dann zugegriffen werden kann, wenn Sie keine Instanz der Klasse (des Objekts) erstellt haben..
Jedes Mal, wenn Sie eine Delphi-Komponente dynamisch erstellen, verwenden Sie eine Klassenmethode: den Konstruktor.
Der Create-Konstruktor ist eine Klassenmethode, im Gegensatz zu praktisch allen anderen Methoden, die in der Delphi-Programmierung verwendet werden. Hierbei handelt es sich um Objektmethoden. Eine Klassenmethode ist eine Methode der Klasse, und entsprechend ist eine Objektmethode eine Methode, die von einer Instanz der Klasse aufgerufen werden kann. Dies lässt sich am besten an einem Beispiel veranschaulichen, bei dem Klassen und Objekte aus Gründen der Übersichtlichkeit rot hervorgehoben sind:
myCheckbox: = TCheckbox.Create (nil);
Vor dem Aufruf von Create stehen der Klassenname und ein Punkt ("TCheckbox"). Es ist eine Methode der Klasse, die allgemein als Konstruktor bekannt ist. Dies ist der Mechanismus, mit dem Instanzen einer Klasse erstellt werden. Das Ergebnis ist eine Instanz der TCheckbox-Klasse. Diese Instanzen werden Objekte genannt. Vergleichen Sie die vorherige Codezeile mit den folgenden Punkten:
myCheckbox.Repaint;
Hier wird die Repaint-Methode des TCheckbox-Objekts (von TWinControl geerbt) aufgerufen. Dem Aufruf von Repaint gehen die Objektvariable und ein Punkt ("myCheckbox") voraus..
Klassenmethoden können ohne eine Instanz der Klasse aufgerufen werden (z. B. "TCheckbox.Create"). Klassenmethoden können auch direkt von einem Objekt aus aufgerufen werden (z. B. "myCheckbox.ClassName"). Objektmethoden können jedoch nur von einer Instanz einer Klasse aufgerufen werden (z. B. "myCheckbox.Repaint")..
Hinter den Kulissen reserviert der Konstruktor Create Speicher für das Objekt (und führt eine zusätzliche Initialisierung durch, wie von TCheckbox oder seinen Vorfahren angegeben)..
Denken Sie an AboutBox (ein benutzerdefiniertes Formular "Über diese Anwendung"). Der folgende Code verwendet so etwas wie:
procedure TfrMain.mnuInfoClick (Sender: TObject);Dies ist natürlich eine sehr gute Möglichkeit, die Arbeit zu erledigen, aber nur um den Code leichter zu lesen (und zu verwalten), wäre es viel effizienter, ihn zu ändern in:
Start
AboutBox: = TAboutBox.Create (nil);
Versuchen
AboutBox.ShowModal;
schließlich
AboutBox.Release;
Ende;
Ende;
procedure TfrMain.mnuInfoClick (Sender: TObject);Die obige Zeile ruft die Klassenmethode "ShowYourself" der Klasse TAboutBox auf. Das "ShowYourself" muss mit dem Schlüsselwort "Klasse":
Start
TAboutBox.ShowYourself;
Ende;
Klassenprozedur TAboutBox.ShowYourself;
Start
AboutBox: = TAboutBox.Create (nil);
Versuchen
AboutBox.ShowModal;
schließlich
AboutBox.Release;
Ende;
Ende;