iterator方法中有多态存在?是否可以举例说明下?谢谢

解决方案 »

  1.   

    在iterator中实现多态 好像没什么意义
      

  2.   

    public Iterator iterator() {
    return new Iterator(){
    int init=0;
    public boolean hasNext() {
    Node node=head;
    for(int i=0;i<init;i++){
    node=node.next;
    }
    if(node.next!=null){
    return true;
    }
    return false;
    } public Object next() {
    Node node=head;
    for(int i=0;i<=init;i++){
    node=node.next;
    }
    init++;
    return node.data;
    } public void remove() {
    MyLinkedList.this.remove(init-1);
    init--;
    }

    };
    写的一个集合重写的iterator()
      

  3.   

    Collection类实现了Iterable接口,而Iterable接口有一个iterator方法.各种各样的Collection类(ArrayList, HashSet等等)都会根据其底层实现覆盖iterator方法,是使用了工厂方法的设计模式,而工厂方法模式也正正是利用了多态性.体现在,当你拿着一个Collection的引用,然后调用它的iterator方法,返回的是这个引用真正指向的对象所实现的Iterator.
      

  4.   

    补充一下,上面提到了工厂方法模式:Iterable是抽象工厂角色
    iterator()是工厂方法
    Iterator是抽象产品角色
    各种各样的Collection类是具体工厂角色
    各个iterator方法返回的Iterator是具体产品角色