A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

黄涵峰

初级黑马

  • 黑马币:0

  • 帖子:17

  • 精华:0

© 黄涵峰 初级黑马   /  2013-3-2 16:09  /  1568 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Iterator it = al.iterator//获取一个al内部的数据集合
while(it.hasNext())
{
   sop(it.next());
}
Iterator不是接口吗?为什么会有Iterator itr = al.iterator();难道Iterator变成类型

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 鼓励鼓励

查看全部评分

6 个回复

倒序浏览
接口也可以作为类型啊
a1.iterator()返回一个迭代器(就是实现了iterator接口的类的对象)
回复 使用道具 举报
把接口当成特殊的类把,只是没有实现方法的类而已
回复 使用道具 举报
接口不是不能直接创建对象吗
回复 使用道具 举报
这么跟你说Iterator本来是一个接口
但是 al 集合类实现了Iterator方法,你调用了它,返回了一个Iterator类型的对象,而这个对象并不是原来的Iterator,
而是实现了Iterator中抽象方法的新的Iterator类
此时其实应该说Iterator是一个新的类了,不能算是接口了
不知道我这样说你明白不?

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

打个比方
List集合下面有两种子类
ArryList和LinkedList他们存储方法并不一样,自然取出方式也不一样,但是
如果都用ListIterator话 却简单了不少事情,所以Java工程师制造这样一个方法,它们建立了一个借口Iterator
同时也自己建立一个子接口ListIterator,这里具体实现办法,都不是我们考虑的
我只管自己用就是了

点评

赞一个  发表于 2013-3-10 09:36

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
黄涵峰 发表于 2013-3-2 16:19
接口不是不能直接创建对象吗

它没直接创建对象,是先创建一个类实现Iterator,然后用这个类创建一个对象。
根据多态,这个对象的类型可以是他的接口Iterator
回复 使用道具 举报
聂斌 中级黑马 2013-3-10 01:23:09
7#
呵呵同学这个很容易理解的:

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

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

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

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马