Ja, das geht. Ob Delphi Mode oder OBJFPC Mode ist dabei egal. Die Grundfrage war, warum Parameternamen nicht den gleichen Namen wie Instanzvariablen (Variablen der Klasse) haben dürfen. Das wird in OBJFPC nicht erlaubt mit Begründung: es ist schlechte Praxis (fördert Verwechslungen z.B.)
Warum eine Klasse sich sich selbst Referenzieren kann wozu das nützlich ist, ist ein anderes Thema, allerdings hab ich mal fix was dazu geschrieben:
Es ist nicht das gleiche wie eine Struktur.
Bspw.
geht nicht, da TMyRecord noch nicht deklariert ist bis zum Ende der Deklaration.
geht, da FRef eh nur eine Referenz ist. Sozusagen ein Zeiger auf Objekte des bis dato noch nicht kompletten Typen TMyClass.
Praktischen nutzen hat das Bspw. in verschiedenen Entwurfsmustern.
Beispiel:
Code: Alles auswählen
TAbstractProxy = class
FNextProxy: TAbstractProxy;
function proxyCall( cmd: String ): Boolean; virtual;
function assignNext( AProxy: TAbstractProxy ): Boolean;
...
So kann man z.B. von TAbstractProxy Klassen ableiten die einen "Befehl" auf unterschiedliche Art weiterreichen. Bspw. eine Klasse die Befehle an Clients sendet, oder an andere Komponenten oder...