Grundlegendes zu Delphi-Klassenmethoden

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..

Klassenmethoden vs. Objektmethoden

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)..

Experimentieren mit eigenen Klassenmethoden

Denken Sie an AboutBox (ein benutzerdefiniertes Formular "Über diese Anwendung"). Der folgende Code verwendet so etwas wie:

procedure TfrMain.mnuInfoClick (Sender: TObject);
Start
AboutBox: = TAboutBox.Create (nil);
Versuchen
AboutBox.ShowModal;
schließlich
AboutBox.Release;
Ende;
Ende;
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:
procedure TfrMain.mnuInfoClick (Sender: TObject);
Start
TAboutBox.ShowYourself;
Ende;
Die obige Zeile ruft die Klassenmethode "ShowYourself" der Klasse TAboutBox auf. Das "ShowYourself" muss mit dem Schlüsselwort "Klasse":
Klassenprozedur TAboutBox.ShowYourself;
Start
AboutBox: = TAboutBox.Create (nil);
Versuchen
AboutBox.ShowModal;
schließlich
AboutBox.Release;
Ende;
Ende;

Dinge zu beachten

  • Die Definition einer Klassenmethode muss die reservierte Wortklasse vor der Prozedur oder dem Funktionsschlüsselwort enthalten, mit dem die Definition gestartet wird.
  • AboutBox-Formular wird nicht automatisch erstellt (Projektoptionen).
  • Setzen Sie die AboutBox-Einheit in die uses-Klausel des Hauptformulars.
  • Vergessen Sie nicht, die Prozedur im (öffentlichen) Interface-Teil der AboutBox-Einheit zu deklarieren.