Iterator是个接口,提供了遍历容器中元素的几个方法。
要使用这个接口提供的方法需要调用Collection接口中的iterator()方法,由它返回一个实现了Iterator接口的对象。既然是这样为什么不直接把Iterator接口中提供的方法写在Collection接口中呢?这样好象更省事一些。

解决方案 »

  1.   

    接口只定义了方法,不实现的,没办法直接把Iterator的方法写在Collection中
      

  2.   

    另 Collection 也是接口,不提供具体实现,不须要写实现代码
      

  3.   

    那样如果你想自定义一个实现iterate功能的类的话,你不得不实现Collection接口,而这个接口中定义的需要实现的方法太多了,有很多不是iterate需要的功能(因为你只想实现iterate的hasNext、next、remove)
      

  4.   

    可能我刚才表达的不太清楚,我的意思是既然Collection接口的每个实现类都要实现iterator()方法,也就是说在实现了iterator()方法的类中还要有一个实现了Iterator接口的类。这样iterator()方法才能返回一个实现了Iterator接口的类的对象。既然有一个实现了Iterator接口的类,那么也当然实现了Iterator接口的方法。也就相当于这个些个方法是在实现了Collection接口的类中实现的,既然这样为什么不把这些个方法直接写在Collection接口中呢?反正都是由Collection接口的实现类实现的。单独把这几个方法抽象成另外一个接口又有什么好处呢?
      

  5.   

    想一想接口的好处就知道了.接口是可以多重继承的..当一个类需要Collection接口的同时又需要其他接口中定义的方法的时候..是不是会很方便呢?我是这么理解的..不知道对不对
      

  6.   

    我觉得这个问题和多继承没关系,因为实现了Collection接口就必须实现Iterator接口,Collection接口中的iterator()方法需要返回一个实现了Iterator接口的对象。