поэтому и нужен иногда класс, исполняющий этот контракт
интерфейсы нужны для того, чтобы создать контракт, который могут реализовывать любые классы, которые их имплементят
если вы создаете интерфейс, чтобы потом реализовать его только для одного класса, то вопрос, зачем в этом случае интерфейс?
а если же не для одного, то мне как пользователю вашего кода, хотелось бы знать, какую стратегию обхода использует Iterator implements Iterator? Если у меня в коде есть еще такие итераторы как: EvenIterator, OddIterator и тд