Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Statisch oder virtuell... worin liegt der Vorteil?

  Alt 18. Aug 2004, 22:49
Ok, ist tatsächlich so wie ichs mir gedacht hab.
Hier nen Beispiel
Delphi-Quellcode:
{$DEFINE _VARIANTE1_}

type
  TBasic = class(TObject)
  private
    {$IFDEF _VARIANTE1_}
    procedure FBerechnung;
    {$ELSE}
    procedure FBerechnung; virtual;
    {$ENDIF}
  public
    procedure Berechne;
  end;

  TAbgeleitet = class(TBasic)
  private
    {$IFDEF _VARIANTE1_}
    procedure FBerechnung;
    {$ELSE}
    procedure FBerechnung; override;
    {$ENDIF}
  end;

implementation

{$R *.dfm}

procedure TBasic.FBerechnung;
begin
  ShowMessage('TBasic.FBerechnung');
end;

procedure TBasic.Berechne;
begin
  FBerechnung;
end;

procedure TAbgeleitet.FBerechnung;
begin
  ShowMessage('TAbgeleitet.FBerechnung');
end;

procedure TForm1.Button1Click(Sender: TObject);
var l1: TAbgeleitet;
begin
  l1 := TAbgeleitet.Create;
  l1.Berechne;
  l1.Free;
end;
Bei Variante1 wird nicht überschrieben und somit wird die ursprungsmethode aufgerufen. Ist Variante1 nicht definiert wird die Ursprungsprocedure überschrieben und somit die procedure aus der abgeleiteten Klasse genommen. Damit kann der Programmierer verhindern das seine Privatemethoden verändert werden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat