正在初学java
刚看到接口这一块
接口是这样说的:当一个抽象类中的方法都是抽象的时候,该类可以用接口来进行定义
接口一般这样来写:
public interface InterfaceDemo {
public static final  int NUM=4;
public abstract void method();
public abstract void method2();
}然后看到API中的接口,例如Collection<E>
然后我去看java的Collection.clss文档中是这样写的:
public interface Collection<E> extends Iterable<E> {
    int size();
    boolean isEmpty();
    boolean contains(Object o);
    ……
}
这里面并没有按照上面的标准用public abstract来修饰方法。
这是什么原因呢?
“当一个抽象类中的方法都是抽象的时候,该类可以用接口来进行定义”这个关于接口的定义难道是错的吗?
我糊涂了,求解释。

解决方案 »

  1.   

    接口里的方法默认都是public abstract的,所以可以不写
      

  2.   

    还有一个问题:
    既然ArrayList是接口Collection的实现类,为什么在ArrayList.class中没有implements Collection
    而是implements下面的类呢?
    public class ArrayList<E> extends AbstractList<E>
            implements List<E>, RandomAccess, Cloneable, java.io.Serializable
    {}还有ArrayList是Collection的实现类的实现类,那就是ArrayList应该重写所有的Collection的方法
    我在ArrayList.class查了下,有部分被重写了。
    但是有一些没有被重写:
    例如:
    boolean retainAll(Collection<?> c);
    int hashCode();
    这又是什么原因呢?
      

  3.   

    因为ArrayList的父类实现了嘛,它继承了父类,没必要再实现撒
      

  4.   


    嗯,我去查了下ArrayList继承的父类AbstractList<E>,果然找到了,太谢谢了~~~
    我一定要好好学习,天天向上!