Как я понимаю foreach понимает интерфейс Iterable как массив, но почему нам нужен лишь экземпляр класса? 
for (String j: new Iterabled()) {
            System.out.println(j);
        }
class Iterabled extends Pets implements Iterable<String>{
    public int size(){
        return names.length;
    }
    @Override
    public Iterator<String> iterator(){
        return new Iterator<String>() {
            private int index = 0;
            @Override
            public boolean hasNext() {
                return index < size();
            }
            @Override
            public String next() {
                index = index + 1;
                return names[index];
            }
        };
    }