Einzelnen Beitrag anzeigen

enigma

Registriert seit: 15. Jun 2008
47 Beiträge
 
#1

Typumwandlung: Elemente der Unterklasse in Oberklasse

  Alt 10. Jul 2024, 18:44
Hallo Delphi Community,

gestern habe ich ein Thema erstellt, das leider nicht ganz klar war – sorry! Aber vielen Dank für eure Tipps ��
Ich möchte in einem Objekt der Oberklasse auf die Attribute und Methoden der Unterklasse zugreifen.
Ausprobiert habe ich Typumwandlung, aber vielleicht habt ihr andere Ideen...

Kurzer Nachtrag: ich habe mehrere Unterklassen, die als Parameter für TOberklasse.Test(AObj: TOberklasse) verwendet werden können. Der Übersicht halber habe ich nur eine Unterklasse aufgeführt.

Aufruf der Methode Test in
Delphi-Quellcode:
lObjOberklasse.Test(lObjUnterklasse);

procedure TOberklasse.Test(AObj: TOberklasse);
var lObj: TOberklasse;
//var lObj: TUnterklasse;
begin
  lObj := TOberklasse.Create;
  if AObj is TUnterklasse then
    lObj := AObj as TUnterklasse; //hier verwende ich Typumwandlung
  ShowMessage('lObj.ClassName = ' + lObj.ClassName);
  ShowMessage('lObj.Name = ' + lObj.Name);
  ShowMessage('lObj.Methode = ' + lObj.Methode);
end;
Oben stimmt für lObj der Klassenname „TUnterklasse“, aber „Name“ und „TestMethode“ sind für dieses gecastete lObj nicht deklariert.

Hier die Definition der beiden Klassen:
Delphi-Quellcode:
  TOberklasse = class(TObject)
    public
      procedure Test(AObj: TOberklasse);
      constructor Create;
  end;

  TUnterklasse = class(TOberklasse)
    public
      Name: String;
      function TestMethode: String;
      constructor Create;
  end;

Geändert von enigma (11. Jul 2024 um 07:47 Uhr)
  Mit Zitat antworten Zitat