Я понимаю, почему циклическое наследование классов не разрешено в Java, но я не понял, почему циклическое наследование интерфейсов не разрешено. Проиллюстрировать:
interface Foo extends Bar {/*methods and constants*/}
interface Bar extends Foo {/*methods and constants*/}
Интерфейсы не нуждаются в инстанцировании, тогда что мешает им расширять друг друга?
Кстати, я читал этот вопрос, но речь идет не об интерфейсах, а о классах: Иерархия циклического наследования в Java
Заранее спасибо.
Foo extends Bar
, то каждый экземплярFoo
также являетсяBar
. ЕслиBar extends Foo
, то каждый экземплярBar
также являетсяFoo
. Если бы оба условия были истинными, то единственным способом удовлетворения этих двух условий было бы условиеFoo == Bar
. - person Andy Turner   schedule 08.02.2016