Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Klassenmethoden in Delphi

  Alt 5. Dez 2003, 09:53
Hallo Phoenix,

vielleicht noch ein Tipp?
  • ClassName ist eine Klassenmethode, Du brauchst deshalb nicht erst ein Exemplar der Klasse zu erstellen
  • Innerhalb von Klassenmethoden kannst Du die Klasse mit Self referenzieren, also
    auch Klassenmethoden mit Self.AClassMethod aufrufen
  • Den Konstruktor kann man auch als "Nachricht an die Klasse" verstehen, und kann deshalb innerhalb von Klassenmethoden auch so verwendet werden myObject:= Self.Create
Deine Klassenmethode könnte deshalb vielleicht so aussehen:
Delphi-Quellcode:
class procedure TMyClass.GetValues(out AValue1, AValue2: string);
begin
  AValue1:= Self.ClassName;
  with Self.Create do
  try
    Result:= AMethodFromInstance;
  finally
    Free;
  end;
end;
Der Vorteil: Sollte die Methode AMethodFromInstance eine virtuelle Methode sein und der Aufruf der Klassenmethode GetValues nicht an TMyClass sondern an einen Erben gerichtet sein, bei dem die Methode AMethodFromInstance überschrieben worden ist, würde wg der Polymorphie diese Überladene Methode aufrufen werden, weil ein Exemplar der geerbten Klasse erzeugt worden wäre.
Wäre das Exemplar in GetValues hingegen mit einer Konkreten Klasse erzeugt worden, also zB TMyClass.Create, würde stattdessen immer die dort implementierte Version von AMethodFromInstance aufgerufen werden...
gruß, choose
  Mit Zitat antworten Zitat