@sanimus слушай был не прав. Действительно на Jave можно обратиться ссылкой к инетрфесу родителя через указатель потомка, а в Kotline нельзя. Однако в данном случае Котлин прозраченее. Тебя как раз запутала эта возможность в Java. По факту используется ссылка через родителя. Если ты напишешь такой-же интерфейс в Cl2 , то это уже будет не переопределение, а перезапись. т.е. интерфейс класса Cl2.
Допустим есть реализация интерфейса Cl2.I, то ты не сможешь привести ее тип к интерфейсу Cl1.I. Считай что для внутренних классов и интерфейсов имя внешнего для него класса это как указание пакета. т.е. тут котлин чеснее он говорит что в пакете Cl2 нет класса I, а Java разрешает что на самомо деле не так.
Почитать можно в документации к языкам, или по Jave можно почитать в книжких по OCA/OCP (
https://www.amazon.com/OCA-OCP-Java-Programmer-Certification/dp/1119272092/ref=sr_1_4?ie=UTF8&qid=1467273055&sr=8-4&keywords=study+guide+java+8 ), или в каких-других тестах, которые любят использовать задокументированные, но не часто применяемые на практике вещи.