Muss nicht irgendwer irgendwann mal irgendwas implementieren?
Der Code steckt im Helper, so wie jetzt auch, bei all den anderen Helpern.
Das Objekt/Interface muß und soll garnichts davon wissen, genauso wie der Vorfahr von einer Vererbung auch nichts wissen soll.
Der Compiler leitet den Aufuf auf die Helper-Methode um, wenn er sie findet und geht nicht direkt auf das Objekt/Interface los.
[add]
Das ist es, was Delphi bei den Class-Helpern macht ... so im Prinzip.
Delphi-Quellcode:
type
TMyClass = class
procedure Foo(S: string);
end;
TMyDummyClassHelper = class(TMyClass)
procedure Bar(S: string);
end;
procedure TMyClass.Foo(S: string);
begin
ShowMessage(S);
end;
procedure TMyDummyClassHelper.Bar(S: string);
begin
S := StringReplace(S, ' ', ' du schöne ', []);
Foo(S);
end;
var
C: TMyClass;
begin
C := TMyClass.Create;
C.Foo('Hallo Welt!');
//C.Bar('Hallo Welt!'); << Compiler findet Bar im Helper und baut quasi einen Cast ein.
TMyDummyClassHelper(C).Bar('Hallo Welt!');
end;
Das haben die einfach so von mir abgeguckt, denn sowas hatte ich früher schon gemacht, als es noch keine Helper gab.