uando uma classe implementa uma interface descendente, por que ela não conta automaticamente como implementação da interface bas

Por que isso não compila?

type
  IInterfaceA = interface ['{44F93616-0161-4912-9D63-3E8AA140CA0D}']
    procedure DoA;
  end;

  IInterfaceB = interface(IInterfaceA) ['{80CB6D35-E12F-462A-AAA9-E7C0F6FE0982}']
    procedure DoB;
  end;

  TImplementsAB = class(TSingletonImplementation, IInterfaceB)
    procedure DoA;
    procedure DoB;
  end;

var
  ImplementsAB: TImplementsAB;
  InterfaceA: IInterfaceA;
  InterfaceB: IInterfaceB;
begin
  ImplementsAB := TImplementsAB.Create;
  InterfaceA := ImplementsAB; >> incompatible types
  ...
end

Em contraste, é assim que eu faço funcionar:

InterfaceA := ImplementsAB as InterfaceB;

o

InterfaceA := InterfaceB;

Quero dizer, se IInterfaceB herda de IInterfaceA e TImplementsAB implementa IInterfaceB, não seria lógico implementar também IInterfaceA e ser compatível com o tipo?

questionAnswers(2)

yourAnswerToTheQuestion