Это может показаться немного интуитивно понятным, но ваш класс должен заявить, что он также реализует родительский интерфейс. Ваше объявление класса должно быть таким:
TMyObj = class(TInterfacedObject, IMyBase, IMyIntf)
Дэнни Торп, бывший инженер Borland, объяснил обоснование этого поведения в ответе на соответствующий вопрос :
Если класс реализации не объявляет, что он поддерживает наследуемый интерфейс, то класс не будет присвоить совместимость с переменными унаследованного интерфейса. Выбранный вами образец кода должен работать нормально (с использованием интерфейса IChild), но если вы попытаетесь назначить из экземпляра TMyClass переменную IParent, то у вас возникнут проблемы.
Причина в том, что потому что COM и ActiveX позволяют реализации реализовать интерфейс потомства (ваш IChild), но запрещают предок этого интерфейса (IParent). Поскольку интерфейсы Delphi предназначены для совместимости с COM, вот откуда этот дурацкий артефакт.
blockquote>