Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
724 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ist das eine Methode oder Prozedur?

  Alt 20. Jul 2025, 11:54
Jede procedure oder function, die als Teil einer Klasse deklariert ist wird per Konvention als Methode bezeichnet, die Sichtbarkeit spielt keine Rolle. Es gibt einen wesentlichen wenn auch versteckten Unterschied zwischen Methoden und eigenständigen procedure oder functions (gemeinhin als Routinen bezeichnet): Methoden haben einen versteckten zusätzlichen Parameter in dem bei einem Aufruf der Methode die Referenz (Zeiger) des Objektes übergeben wird für das die Methode arbeiten soll. Innerhalb des Kodes der Methode kann man explizit über den Bezeichner "self" auf diesen Parameter zugreifen und er wird auch intern verwendet, um auf Felder, properties oder andere Methoden des Objektes zuzugreifen. Wegen dieses Parameters kann man eine Methode nur für ein Objekt (Instanz einer Klasse) aufrufen, d. h. über die objectvariable.methode Syntax. Nur innerhalb des Kodes einer Methode kann man eine andere Methode der gleichen Klasse direkt aufrufen, weil der Compiler da automatisch self für die objectvariable verwendet.

Bei als "class procedure" oder "class function" deklarierten Methoden ist der self-Parameter übrigens eine Referenz auf die Klasse selbst; die Addresse der ziemlich komplexen in-memory Struktur, die der Compiler für jede Klasse erzeugt. Ein constructor ist im Prinzip auch nur eine class function, ein destructor dagegen eine (fast) normale Methode.

Um die Verwirrung komplett zu machen: wenn eine class procedure/function mit dem "static" Keyword deklariert wird bekommt sie keinen self-Parameter, ist also was die Parameter angeht, äquivalent zu einer eigenständigen Routine. Sie im Rahmen einer Klasse zu deklarieren gibt einem aber die Möglichkeit, quasi einen eigenen Namespace innerhalb einer Unit zu schaffen, in dem man konzeptionell zusammengehörige Routinen bündeln kann.

Du solltest dich mal von Vorne bis Hinten durch den Delphi Language Guide arbeiten. Da findet man solche Infos. War noch einfacher, als es den noch als gedrucktes Buch gab, aber es geht auch online oder mit der offline-Hilfe. Und es lohnt sich, glaub mir...
Peter Below
  Mit Zitat antworten Zitat