猿问

如图代码,Collection 类中的iterator()是抽象方法,为什么可以调用?

        Collection    c1 =new ArrayList();
        c1.add("hello");
        c1.add(1);
        Collection    c2 =new ArrayList();
        c2.add(new Student() );
        c2.addAll(c1);
        c2.add("我");
        Iterator it = c2.iterator();

Collection 与List 还有ArrayList都没有重写iterator()方法,为什么可以最后一步这样调用呢?

慕雪6442864
浏览 605回答 3
3回答

繁星点点滴滴

ArrayList继承自AbstractList类, AbstractList类重写了List接口的iterator()方法: public Iterator<E> iterator() { return new Itr(); } 其中Itr是AbstractList的内部类,实现了Iterator接口。

函数式编程

ArrayList不是有吗??

慕的地10843

这个Iterator应该是ArrayList的内部类吧,如果ArrayList中找不到的话它的基类中应该有,不同的集合类Iterator应该也各不相同,你可以自己看看源码。
随时随地看视频慕课网APP

相关分类

Java
我要回答