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;