Hallo zusammen!
ich hab gerade ein interessantes Problem mit abstrakten Methoden. Ich kann es mir erklären aber ich finde keine Lösung.
Vielleicht kann mir jemand helfen:
Delphi-Quellcode:
unit UTypes;
interface
type
TMyType = (mtAnton, mtBerta, mtCaesar);
TBasis =
class
function GetMyType(AMyType: TMyType = mtAnton):
string;
virtual;
abstract;
end;
TBerta =
class(TBasis)
function GetMyType(AMyType: TMyType = mtBerta):
string;
override;
end;
implementation
function TBerta.GetMyType(AMyType: TMyType = mtBerta):
string;
begin
case AMyType
of
mtAnton: result := '
Anton';
mtBerta: result := '
Berta';
mtCaesar: result := '
Cäsar';
end;
end;
end.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
locObj: TBasis;
begin
locObj := TBerta.Create;
ShowMessage(locObj.GetMyType);
locObj.Free;
end;
Ein Klick auf Button1 liefert mir "Anton".
Wäre locObj vom Typ TBerta bekäme ich "Berta".
Das ist soweit klar!
Jetzt bekomme ich locObj als Rückgabe einer Methode zurück. Es kann ein beliebiger Typ sein, der als Basisklasse TBasis hat, also ein TBerta, TCaesar und wie sie alle heissen.
Ich will bzw. MUSS aber trotzdem bei einem TBerta "Berta" bekommen wenn ich locObj.GetMyType aufrufe.
Wie kann ich das anstellen?
MfG Thomas.