天上飞的云传奇
2021-08-08 19:21
采纳率: 80%
浏览 33
已结题

关于Java的父类接口问题?

我在一个测试类中有如下

img
在LinkedList中并无Iterator()方法实现,是调用父类AbstractSequentialList的方法
父类AbstractSequentialList中此方法实现

  public Iterator<E> iterator() {
        return listIterator();
}

public abstract ListIterator<E> listIterator(int index); //并未实现父类AbstractList的抽象方法

于是再次点击跟踪方法进入AbstractList

 public ListIterator<E> listIterator() {
        return listIterator(0);
    }  

public ListIterator<E> listIterator(final int index) {
        rangeCheckForAdd(index);

        return new ListItr(index);
    }

new的是ListItr类

img
在此类中并无next,hasNext方法!
但是在LinkedList的ListItr中有
img
这里就不懂了 按照ctrl+鼠标左键 跟踪的方法,应该是用的AbstractList中的ListItr但是在测试类中为什么会可以调用next和HasNext方法,在在AbstractList中的ListItr并未实现方法啊?

//在AbstractList中的ListItr
private class ListItr extends Itr implements ListIterator<E> 
  • 收藏

2条回答 默认 最新

  • 八云黧 2021-08-08 19:29
    已采纳
    1. 用的确实是AbstractList中的ListItr
    2. ListItr继承了另一个内部类Itr,Itr是有next和hasNext的,
    打赏 评论
  • guwei4037 2021-08-08 19:24

    你忽略了一点,LinkedList也实现了List接口,List接口中有Iterator方法。

    打赏 评论

相关推荐 更多相似问题