Нет, все в порядке. Поскольку ICoolEngine
расширяет IEngine
, любой объект, реализующий ICoolEngine
, может рассматриваться как IEngine
(конечно, без всех ICoolEngine
-специфических методов). Вам просто нужно знать о разнице типов в зависимости от того, с каким интерфейсом вы работаете в каждой ситуации, и не использовать ICoolEngine
методы, которые не определены в IEngine
(при условии, что в вашей код, есть дополнительные методы, перечисленные в эквиваленте ICoolEngine
).
Это неплохая практика; вы просто используете силу полиморфизма.