Hallo,
das hat mein Weltbild zerstört.
Delphi-Quellcode:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
type
TFigure = class(TObject)
procedure Draw(Caption: string);
end;
TRectangle = class(TFigure)
procedure Draw(Caption: string);
procedure Show(Caption : String);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TFigure.Draw(Caption: string);
begin
Messagebox(0, 'Draw Methode von TFigure', @Caption[1], 0);
end;
procedure TRectangle.Draw(Caption: string);
begin
Messagebox(0, 'Draw Methode von TRectangle', @Caption[1], 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Figure: TFigure;
Rectangle: TRectangle;
aObj : TObject;
begin
...
Figure := TFigure.Create;
try
TRectangle(Figure).Show('TFigure.Create / TRectangle(Figure).Draw');
// Show nicht in TFigure trotzdem wird aber TRectangle.Show aufgerufen.
finally
FreeAndNil(Figure);
end;
...
end;
procedure TRectangle.Show(Caption: String);
begin
Messagebox(0, 'Show Methode von TRectangle', @Caption[1], 0);
end;
end.
Das ist nicht zu fassen obwohl Show keine Methode von TFigure ist, wird durch den Cast TRectangle.Show aufgerufen.
Hat jemand dafür eine Erklärung ?