黑马程序员技术交流社区

标题: Iterator是接口 [打印本页]

作者: 黄涵峰    时间: 2013-3-2 16:09
标题: Iterator是接口
Iterator it = al.iterator//获取一个al内部的数据集合
while(it.hasNext())
{
   sop(it.next());
}
Iterator不是接口吗?为什么会有Iterator itr = al.iterator();难道Iterator变成类型
作者: lzw123451    时间: 2013-3-2 16:12
接口也可以作为类型啊
a1.iterator()返回一个迭代器(就是实现了iterator接口的类的对象)
作者: lzw123451    时间: 2013-3-2 16:16
把接口当成特殊的类把,只是没有实现方法的类而已
作者: 黄涵峰    时间: 2013-3-2 16:19
接口不是不能直接创建对象吗
作者: 偏執旳、靑春    时间: 2013-3-2 16:22
这么跟你说Iterator本来是一个接口
但是 al 集合类实现了Iterator方法,你调用了它,返回了一个Iterator类型的对象,而这个对象并不是原来的Iterator,
而是实现了Iterator中抽象方法的新的Iterator类
此时其实应该说Iterator是一个新的类了,不能算是接口了
不知道我这样说你明白不?

迭代器是把不同的取出方式封装了

打个比方
List集合下面有两种子类
ArryList和LinkedList他们存储方法并不一样,自然取出方式也不一样,但是
如果都用ListIterator话 却简单了不少事情,所以Java工程师制造这样一个方法,它们建立了一个借口Iterator
同时也自己建立一个子接口ListIterator,这里具体实现办法,都不是我们考虑的
我只管自己用就是了
作者: lzw123451    时间: 2013-3-2 16:55
黄涵峰 发表于 2013-3-2 16:19
接口不是不能直接创建对象吗

它没直接创建对象,是先创建一个类实现Iterator,然后用这个类创建一个对象。
根据多态,这个对象的类型可以是他的接口Iterator
作者: 聂斌    时间: 2013-3-10 01:23
呵呵同学这个很容易理解的:

接口:初期理解,可以认为是一个特殊的抽象类
        当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。

因为他是个特殊的抽象类,,所以可以al.iterator,,接口的表示方式和类class差不多,接口里面的函数都是抽象的

同时j接口是不可以创建对象的,因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。否则子类是一个抽象类。子类要运行不是复写父类的方法,而是子类要全都将接口的东西实现后才能实例化

呵呵同学你就把接口看成是个特色的抽象类就可以了,,,,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2