Использование интерфейса Iterator позволяет любому классу, реализующему его методы, действовать как итераторы. Понятие интерфейса в Java состоит в том, чтобы иметь договорное обязательство предоставлять определенные функции в классе, который implements интерфейс, действовать так, как требуется интерфейсом. Поскольку договорные обязательства должны быть выполнены, чтобы быть действительным классом, другие классы, которые видят класс implements интерфейс и, таким образом, уверены, что класс будет иметь эти определенные функции.
В этом примере вместо того, чтобы реализовать методы (hasNext(), next(), remove()) в самом классе LinkedList, класс LinkedList объявит, что он implements интерфейс Iterator, чтобы другие знали, что LinkedList можно использовать в качестве итератора. В свою очередь, класс LinkedList будет реализовывать методы из интерфейса Iterator (например, hasNext()), поэтому он может функционировать как итератор.
Другими словами, реализация интерфейса — это понятие объектно-ориентированного программирования, позволяющее другим узнать, что определенный класс имеет то, что требуется, чтобы быть тем, чем он себя называет.
Это понятие обеспечивается наличием методов, которые должны быть реализованы классом, реализующим интерфейс. Это гарантирует, что другие классы, которые хотят использовать класс, реализующий интерфейс Iterator, действительно будут иметь методы, которые должны быть у итераторов, такие как hasNext().
Кроме того, следует отметить, что, поскольку Java не имеет множественного наследования, использование интерфейса может использоваться для эмуляции этой функции. Реализуя несколько интерфейсов, можно иметь класс, который является подклассом, чтобы наследовать некоторые функции, а также «наследовать» функции другого, реализуя интерфейс. Например, если бы я хотел иметь подкласс класса LinkedList с именем ReversibleLinkedList, который мог бы выполнять итерацию в обратном порядке, я мог бы создать интерфейс с именем ReverseIterator и заставить его предоставлять метод previous(). Поскольку LinkedList уже реализует Iterator, в новом обратимом списке должны быть реализованы интерфейсы Iterator и ReverseIterator.
Подробнее об интерфейсах можно прочитать на странице Что такое интерфейс? из руководства по Java от Sun.
person
coobird
schedule
18.09.2008