In Delphi leider nicht möglich

Auf Interfaces umsteigen?
Also
OLE-Interface, genauer IDispatch in einem Variant verpackt.
IDispatch in einem Variant, da werden Methodenaufrufe erst zur Laufzeit aufgelöst und dem Compiler ist das egal (leider auch der Codevervollständigung von Delphi).
Delphi-Quellcode:
TKlasseA = class(..., IKlasseA )
function TuEtwas: Variant; // hier IKlasseA oder IKlasseB wenn am Anfang als TKlasseB/IKlasseB erstellt wurde
end;
TKlasseB = class(TKlasseA, IKlasseB)
function TuEtwasAnderes: Variant; // hier IKlasseB
end;
Ein Therapeut entspricht 1024 Gigapeut.