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