Nein, IReadObject ist "überlüssig"/unnötig, da es schon in IFullObject enthalten ist (der Vorfahre).
Die Funktion von IWriteObject ist zwar auch in IFullObject enthalten, aber das Interface selber natürlich nicht.
Das sehe ich etwas anders! Lass das mal laufen:
Delphi-Quellcode:
type
IFather = interface
['{41780D81-7DD0-491B-831D-E3C247FB425F}']
end;
IChild = interface (IFather)
['{BAB88147-561D-4786-BC59-FDA90AFF3669}']
end;
TClass1 = class(TInterfacedObject, IFather, IChild)
end;
TClass2 = class(TInterfacedObject, IChild)
end;
procedure Test;
var
intf1: IInterface;
intf2: IInterface;
begin
intf1 := TClass1.Create;
intf2 := TClass2.Create;
if Supports(intf1, IFather) then
ShowMessage('TClass1 supports IFather')
else
ShowMessage('TClass1 doesn''t support IFather');
if Supports(intf2, IFather) then
ShowMessage('TClass2 supports IFather')
else
ShowMessage('TClass2 doesn''t support IFather');
end;