Проблема в том, как мне поступить с публичными A doIt () и публичными AImpl doIt ()?Может ли класс интерфейса быть возвращаемым значением?
Без каких-либо проблем ДА , из версии 1.5 допускается переопределение ко-вариантных типов возврата, т. Е. Если дочерний класс переопределяетродительский метод, тогда возвращаемый тип метода не обязательно должен быть того же типа, что и возвращаемый тип родительского метода, он также может быть и дочерним.В вашем случае doIt()
дочернего метода может вернуть либо тип A
, либо его дочерний AImpl