Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
22.785 Beiträge
 
Delphi XE Professional
 
#27

AW: Reintroduce / Override bei Virtual / Dynamic im Bezug auf OOP - Prinzipien

  Alt 28. Feb 2012, 14: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
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat