Если у объекта есть метод iterator() не принимающий аргументов и возвращающий итератор, объект называется итерируемым. Ему не нужно реализовывать какой-либо тип. Вы можете использовать такой класс прямо в выражении for без необходимости вызывать метод iterator() :
Этот пример создаст строку перечислением элементов массива, используя итератор. Это тоже самое, что вызывать a.iterator() в выражении for.