Java的类库
接口List是这样声明的:
请问为什么要把addAll(),方法声明为抽象public interface List extends Collection {
    // Positional Access
    Object get(int index);
    Object set(int index, Object element);            // Optional
    void add(int index, Object element);              // Optional
    Object remove(int index);                         // Optional
    abstract boolean addAll(int index, Collection c); // Optional    // Search
    int indexOf(Object o);
    int lastIndexOf(Object o);    // Iteration
    ListIterator listIterator();
    ListIterator listIterator(int index);    // Range-view
    List subList(int from, int to);
}

解决方案 »

  1.   

    地球人都知道当一个被实现的接口里的抽象方法没有被在子类中overriding的话,那么这个子类也不能被定义为实体类
    因此,在代码实现中,为了能在实现了这个接口的前提下定义实体类就必须实现所有基类中的抽象成员(包括自定义的抽象成员),这样就达到了对功能类的基本设计,当然类的扩展一般都是不可预测的
      

  2.   

    但他为什么要把这个方法定义成抽象方法呢?是extends和implements的区别吗?
      

  3.   

    to beyond_xiruo(离开csdn去避难) 你还是没有回答我的问题,我的问题的关键在题目,为什么他要把这个接口声明为抽象
      

  4.   

    我的理解:如果父类中有一个方法。那么它的子类(如果有很多)都可以通过继承来拥有同名方法。当然作用,方法题可以不同,
    所以在父类中是没有必要详细的写出这个方法的实体(所以干脆把他定义为abstract)在这里也可以同样理解把
      

  5.   

    下面是我在java.sun.com forum上给我的回答In an interface all methods are public and abstract by default; it depends on your taste whether you write "abstract" explicitly.$ cat a.java
    interface a 
    {
    void foo() ;
    abstract void bar();
    }
    $ javac a.java
    $ javap a
    Compiled from a.java 
    interface interface a extends java.lang.Object 
    {    
    public abstract void foo();    
    public abstract void bar();
    }如何?
      

  6.   

    纯抽象类就是接口的演变。
    纯抽象类:如果一个抽象类里只有常量和public类型的方法的抽象类,叫纯抽象类。
    用处:
    定义相关类的共同行为,而不需要考虑这些类之间的层次关系。
    可以指明多个类需要实现的方法。
    揭示一个编程界面,而不揭示类体,通过接口列表可以是实现多重继承。
      

  7.   

    Compiled from List.java
    public interface List extends java.util.Collection
        /* ACC_SUPER bit NOT set */
    {
        public abstract java.lang.Object get(int);
        public abstract java.lang.Object set(int, java.lang.Object);
        public abstract void add(int, java.lang.Object);
        public abstract java.lang.Object remove(int);
        public abstract boolean addAll(int, java.util.Collection);
        public abstract int indexOf(java.lang.Object);
        public abstract int lastIndexOf(java.lang.Object);
        public abstract java.util.ListIterator listIterator();
        public abstract java.util.ListIterator listIterator(int);
        public abstract List subList(int, int);
    }这是我javap后的结果,其实还是java.sun.com上的这人说的清楚啊