Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
Delphi 12 Athens
|
AW: Reintroduce / Override bei Virtual / Dynamic im Bezug auf OOP - Prinzipien
28. Feb 2012, 15:25
Ja. Schau Dir einmal dieses Beispiel an:
Delphi-Quellcode:
type
TSomeClass = class
protected
procedure DoSomethingVirtual; virtual;
procedure DoSomething; virtual;
end;
TSomeOtherClass = class(TSomeClass)
public
procedure DoSomethingVirtual; override; //Überschreiben
procedure DoSomething; reintroduce; //Verdecken
end;
{ TSomeClass }
procedure TSomeClass.DoSomething;
begin
ShowMessage('TSomeClass.DoSomething');
end;
procedure TSomeClass.DoSomethingVirtual;
begin
ShowMessage('TSomeClass.DoSomethingVirtual');
end;
{ TSomeOtherClass }
procedure TSomeOtherClass.DoSomething;
begin
ShowMessage('TSomeOtherClass.DoSomething');
end;
procedure TSomeOtherClass.DoSomethingVirtual;
begin
inherited;
ShowMessage('TSomeOtherClass.DoSomethingVirtual');
end;
procedure TForm14.Button1Click(Sender: TObject);
var
aClass: TSomeClass; //Variable vom Typ der Elternklasse
begin
//Instanz der Kindklasse anlegen
aClass := TSomeOtherClass.Create;
try
//Methode der Kindklasse wird aufgerufen
aClass.DoSomethingVirtual;
//Methode der Elternklasse wird aufgerufen
aClass.DoSomething;
finally
aClass.Free;
end;
end;
Siehe dazu auch http://docwiki.embarcadero.com/RADSt..._und_Verdecken
[edit] Kein roter Kasten [/edit]
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|