Java 从同一类重写同一方法两次
我了解迭代器()方法如何与ArrayList类一起工作。在ArrayList类中,我发现迭代器()方法从同一个类AbstractList重写了两次Java 从同一类重写同一方法两次,java,arraylist,iterator,Java,Arraylist,Iterator,我了解迭代器()方法如何与ArrayList类一起工作。在ArrayList类中,我发现迭代器()方法从同一个类AbstractList重写了两次 public Iterator<E> iterator() { return new Itr(); // Itr is an inner private class of // ArrayList which
public Iterator<E> iterator() {
return new Itr(); // Itr is an inner private class of
// ArrayList which
// implements Iterator interface .
}
public Iterator<E> iterator() {
return listIterator();
}
公共迭代器迭代器(){
return new Itr();//Itr是的内部私有类
//ArrayList哪个
//实现迭代器接口。
}
公共迭代器迭代器(){
返回listIterator();
}
但这怎么可能呢?这里应该有一个已经定义的错误。我很困惑。您看到的第一个迭代器()
方法属于ArrayList
类,但第二个不属于
它属于子列表
类,它是数组列表
的内部类:
private class SubList extends AbstractList<E> implements RandomAccess {
...
public Iterator<E> iterator() {
return listIterator();
}
...
}
私有类子列表扩展了AbstractList实现了随机访问{
...
公共迭代器迭代器(){
返回listIterator();
}
...
}
因此,它不会被同一类重写两次。每个类重写一次。不允许从同一类重写同一方法两次。在您的案例中,这是两个不同的类,即:
public class ArrayList<E> extends AbstractList<E>
private class SubList extends AbstractList<E> implements RandomAccess
公共类ArrayList扩展了AbstractList
私有类子列表扩展了AbstractList,实现了随机访问
后者是前者的一个内部类,这就是为什么两者都可以有具有相同签名的相同方法