Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#2

Re: Methodenhierarchie in der Vererbung umgehen/überspringen

  Alt 10. Jan 2004, 20:42
Das ist in Delphi eigentlich nicht vorgesehen, man kann aber tricksen sodas dies trotzdem geht.

Delphi-Quellcode:

type
  TA = class
    procedure CommonMethod(Dummy: Integer);

    procedure Method(Dummy: Integer); virtual;
  end;

  TB = class(TA)
    procedure Method(Dummy: Integer); override;
  end;

  TC = class(TB)
    procedure Method(Dummy: Integer); override;
  end;

procedure TA.CommonMethod(Dummy: Integer);
begin
  ShowMessage('TA');
end;

procedure TA.Method(Dummy: Integer);
begin
  CommonMethod(Dummy);
end;

procedure TB.Method(Dummy: Integer);
begin
  inherited;
  ShowMessage('TB');
end;

procedure TC.Method(Dummy: Integer);
var
  N: procedure(Dummy: Integer); of object;
begin
  inherited;
  ShowMessage('TC');

// nun rufen wir inherited TA.Method(Dummy) auf
  TMethod(N).Data := Self;
  TMethod(N).Code := @TA.Method;
  
  N(Dummy);

// nun so wie es auf herkömmliche OOP Weise funktioniert
  CommonMethod(Dummy);
end;
Gruß Hagen
  Mit Zitat antworten Zitat