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.