正在初学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来修饰方法。
这是什么原因呢?
“当一个抽象类中的方法都是抽象的时候,该类可以用接口来进行定义”这个关于接口的定义难道是错的吗?
我糊涂了,求解释。
刚看到接口这一块
接口是这样说的:当一个抽象类中的方法都是抽象的时候,该类可以用接口来进行定义
接口一般这样来写:
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来修饰方法。
这是什么原因呢?
“当一个抽象类中的方法都是抽象的时候,该类可以用接口来进行定义”这个关于接口的定义难道是错的吗?
我糊涂了,求解释。
既然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();
这又是什么原因呢?
嗯,我去查了下ArrayList继承的父类AbstractList<E>,果然找到了,太谢谢了~~~
我一定要好好学习,天天向上!