JAVA接口问题?求指导??

JAVA接口里的方法不是抽象的吗,那为什么迭代器也是个接口,可以用Iteratorit=newArraylist.iterator();获取迭代器,然后里面可以直接调用n... JAVA接口里的方法不是抽象的吗,那为什么迭代器也是个接口,可以用Iterator it=new Arraylist.iterator();获取迭代器,然后里面可以直接调用next方法? 展开
 我来答
wang794476930
2013-04-07
知道答主
回答量:15
采纳率:0%
帮助的人:4.8万
展开全部
首先,Iterator 就是接口,也是抽象类,对于你定义一个接口是否是抽象的,其实意义不大(abstract前缀可选),因为接口是用来实现的,主要可以给方便实现类可以任意调用接口的方法,而且无需暴露它的内部表示。后面的Iterator 对象it可以调用Iterator 里面的所有方法!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b1c20a5
2013-04-07 · 超过14用户采纳过TA的回答
知道答主
回答量:48
采纳率:100%
帮助的人:17.4万
展开全部
因为AbstracyList中有内部类的方法是
public Iterator iterator() {
return new Itr();
}
所以new ArrayList().iterator 返回的是一个Iterator的类型的变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宝贵还绝妙丶白桦081ca
2013-04-07 · 超过22用户采纳过TA的回答
知道答主
回答量:59
采纳率:100%
帮助的人:58.9万
展开全部
Iterator it=new Arraylist.iterator();迭代器Iterator是个接口,可是在这里是调用了 Arraylist的迭代器,也就是使用了 Arraylist里面对迭代器Iterator的实现方法。比如 List it=new Arraylist();
追问
那这里的iterator 是个内部接口,里面的方法不都是抽象的吗,要实现不是应该子类复写吗,为什么直接调用?
追答
ArrayList这个类里面已经封装了对iterator 这个接口的实现方法了,所以这样写Iterator it=new Arraylist.iterator();调用的是ArrayList对iterator 的实现方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a76627d
2013-04-07 · TA获得超过101个赞
知道小有建树答主
回答量:203
采纳率:100%
帮助的人:119万
展开全部
你追中源代码仔细看看,实现iterator()方法的是它的实现类,并不是iterator接口
public Iterator<E> iterator() {
return new Itr();
}
private class Itr implements Iterator<E> {
int cursor = 0;

int lastRet = -1;

...
}
也即是说之后的hasnext和next方法都是这个实现类的方法。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
茶语轻歌
2013-04-07 · TA获得超过206个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:132万
展开全部
这是多态,父类应用指向子类对象。List 是接口,定义List list=new ArrayList();我们不是也可以用list.add()嘛。这时候list变量里的地址是指向实现类也就是ArrayList的实例的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式