Мой вопрос довольно прост, и все это началось после того, как я случайно увидел исходный код интерфейса Iterable. Я думал, что найду этот интерфейс имеет член абстрактного класса под названием «AbstractIterator» или что-то в этом роде, но, оказывается, это интерфейс.Java: Iterator, Iterable - интерфейс или абстрактный класс?
Почему? Почему Iterator не является абстрактным классом? Интерфейсы используются для определения определенного признака - поэтому «способный» конец выдается на многие из них. Но оказывается, что у java есть другое представление, как кажется. Объяснение, пожалуйста ... :)
Ps: List, Set и т.д., также, на мой взгляд, как предполагается, абстрактные классы - поэтому мой вопрос о «Em, а также ...
почему должны быть абстрактные классы? если вы хотите заключить контракт, тогда интерфейс достаточно ('java.util.List'), если вы хотите навязать контракт и делиться своим поведением, тогда вы могли бы с абстрактным классом (' java.util.AbstractList ') – fGo
Как и в случае с набором, списком и другими материалами Коллекций, они могут иметь схожие функции (таким образом, интерфейс), но их реализации очень разные, просто рассмотрите arraylist и связанный список, если они были подклассифицированы из абстрактного списка, который они придется переписать много кода. – arynaq