最近想正儿八经的研究些面向对象的东西,找了本thinking in java看看,觉得还不错。看过一个例子后,突然发现,原来印象中的接口也不过如此而已。书中提到:“接口(interface)比抽象(abstract)的概念更进了一步。你可以把一个接口看成是一个纯的抽象类。”我认为作者对接口的这一解释再准确不过了。
那么,为什么要使用接口呢?java只支持单继承的机制,很显然的,这样的一套体系建立起来的继承关系的最终结构必定是像一棵N叉树。这种树形结构虽然条理明晰,但一旦要处理的实际问题变得复杂起来,势必将造成类结构树的迅速增长,直接的结果是:处在下层子类的间接父类越来越多,最终使得子类成员膨胀、臃肿、难以维护,同时类的设计者处理问题时头绪太多,如履薄冰。
简言之,引入接口就是为了打破这种简单的树形结构。一个类继承了某个类后,还一个横插N个接口上来,然后,只需要实现这些接口的所有方法,这样之后,会出现什么情况呢?外部的主逻辑程序看这个类,接口中定义的方法和继承来的方法、类本身定义的方法,所有的方法,一视同仁,实现了整体上的封装和设计上的灵活。
在作一下笔记:
1, 接口的实现可以由java语言编写,也可以由其他语言编写。这也是ejb的应用原理。
2, 接口的一般用处:
用接口来定义一些全局变量——接口中定义的属性都是static + final 类型的
用接口来定义基本数据结构——定义行为,根据不同的需要定义不同的实现(定义方法接口时只需要方法名、返回类型、形参表, 不要方法体)