黑马程序员技术交流社区
标题:
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