从JAVA集合工具包框架理解接口,抽象类和类的作用
Java集合工具包框架
参考网址:http://www.cnblogs.com/skywang12345/p/3308498.html
认真研究这个图,我们可以得到接口,抽象类,类扮演的角色和作用,以及可以很清晰地看出为什么要使用这些概念。
(虚线框代表interface,蓝色实线框代表abstract class,黑色实线框代表class。实线代表继承extends,虚线代表实现implements,虚线依赖代表依赖关系)
我们分别看以下几种结构:
接口继承接口
假设有多个接口继承于同一个上层接口,那么他们共用上层接口的方法,各自还保留各自的方法,即有一定的共同操作,还有各自的操作,对应到图中,List和Set继承于Collection,那么就是可以对List和Set有一些共同的操作,定义在Collection接口中,他们还有不同的操作,分别定义在List和Set中。所以接口继承接口的作用,就是能够细分不同的操作(方法)需求。
抽象类继承接口
抽象类实现接口的作用,就是实现接口的一部分方法,再加上自己定义一部分方法,可抽象可具体。比如,图中,AbstractMap实现了Map接口中的大部分API,这就代表它默认实现了很多Map要求的操作,在它的子类中,可以直接使用这些操作,也可以重写,这种一部分实现,一部分抽象的作用,就能让子类直接使用已经实现好的大部分API,降低开发难度。在接口和类之间加入抽象类,能够很好的让往下开发新class的开发者不用再去大量地实现系统给定的方法,而抽象类中遗留的那些未实现的方法,既能保证在没有实现时无法操作,保证安全性,同时也能给接下来的开发者带来自由性。
类继承抽象类
很简单,就是实现了抽象类中的抽象方法,外加自己加的一些方法,比如AbstractMap下继承的HashMap,TreeMap,WeakMap,还有其他等等,这些就是最详细,分类最细的类,里面所有的方法都是实现的,可以直接拿来用。
依赖关系
依赖关系表示一个类依赖于另一个类的定义,比如图中,Collection每个实现类都要实现Iterator()函数。一定程度上,底层实现的概念就包含这个。