java中为什么不直接用Collection接口,而是还要再造一个他们相应的抽象类?

java中为什么不直接用Collection接口,而是还要再造一个他们相应的抽象类?

问题描述:

诸如HashMap、ArrayList等具体类,都是直接继承自AbstractMap或AbstractList,为什么要设置这么个抽象类,而不直接用相应的接口?
还有这些抽象类为什么单单空着size和iterator两个方法不去实现?

抽象类可以添加公共方法,一些可以写的代码可以先写好,接口没办法写方法。

public interface Collection extends Iterable
这是接口,没有任何的实现,也不能扩充,需要你自己再次继承,以扩充满足自己需要的类

如果是接口那你要把接口里所有的方法都实现,即使是空实现。但是有时候并不需要用所有的方法,所以用抽象类,只重载你需呀用的方法,这样代码能简洁一点。