List接口是继承了Collection接口,那为什么List接口中有和Collection接口一样的纯抽象方法呢比如说Collection中有 int size();List接口中要再写一遍 int size();

解决方案 »

  1.   

    正因为 List 继承于 Collection,所以 List 里面的 size() 方法就是 Collection 的 size() 方法呀!
      

  2.   

    楼主的意思是 既然List继承了Collection 那List里 没必要在出现size()方法了
      

  3.   

    你没搞清楚。List 继承于 Collection,所以 List 本身不需要定义 size() 方法,我们看到的 List.size() 其实就是 Collection.size()。
      

  4.   

    查看了下中文API 下面这话 看来说明了 楼主的问题:
    List 接口在 iterator、add、remove、equals 和 hashCode 方法的协定上加了一些其他约定,超过了 Collection 接口中指定的约定。为方便起见,这里也包括了其他继承方法的声明。
      

  5.   

    大哥 我当然知道了  意思是 你没发现API里向来冲写的方法 才放到方法摘要里  继承后没改动的方法都另写在一个地方吗? 这就是我的意思
      

  6.   

    看一下Collection和List的源码就知道了,都有一个相同的int size()
      

  7.   

    看到了吧 这就是楼主的意思 请楼主看我在8楼的回复回帖 API 里句话 你可能没注意到 我刚查看过
    List 接口在 iterator、add、remove、equals 和 hashCode 方法的协定上加了一些其他约定,超过了 Collection 接口中指定的约定。为方便起见,这里也包括了其他继承方法的声明。
      

  8.   

    我想说的是既然Collection里有了,为什么List接口中还要再写一遍相同的方法呢
      

  9.   

    就是改了一下 JavaDoc,把父接口里面的“collection”换成“list”了。
      

  10.   

    这为哥们 楼主的意思就是 为什么List里还要重新写 上int size() 因为按习惯来说 这个应该没必要再写了
    你明白了吗?interface  A {         //Collection
    abstract int size();
    }
    interface  B extends A {  //List

    }
    class C implements B {
    public int size() {
    System.out.println("C");
    return 1;
    }
    }
    public class Demo {
    public static void main (String [] args) {
    B c = new C();
    c.size();
    }
    }
    楼主认为 代码应该向上面那样写
      

  11.   

    为方便起见,这里也包括了其他继承方法的声明。
    楼主 你还没看到我的回复吗?????????
    API里写了 为什么他要在这里还写的原因!!!!你看不到我回复吗???上面红字我标示了!!!
      

  12.   

    是我理解错误, 像LZ致歉.. 同时我也查了api .. 
     Edwin603 解释正确.. 向其学习.