Да, это будет работать (если вы измените объявление cMyClass
для реализации iMyInterface
), и это безопасно, если ссылка действительно ссылается на экземпляр cMyClass
.
Однако это вообще плохая идея. Весь смысл использования интерфейса в том, чтобы иметь возможность работать с любой реализацией - это отделять абстракцию от реализации. Если затем вам потребуется конкретная реализация, вы можете также сделать тип i
просто cMyClass
для начала.
Итак, предположим, что вместо того, чтобы вызывать конструктор cMyClass
самостоятельно, вы получите параметр метода типа iMyInterface
- плохая идея привести к cMyClass
в этот момент, так как это может быть другой реализация интерфейса.
(С другой стороны, неплохо бы начать следовать соглашениям об именах Java, в которых говорится, что классы и интерфейсы должны быть в Pascal-регистре, поэтому не используйте префиксы c
и i
.)