虽然一直觉得 interface 和abstract其实各自作用不同,而且有各自所适应的情况。但是就是说不清楚,他们在使用时应该在注意的区别。
看了 Erich Gamma的说法,恍然大悟。java interface作为接口时是应该相对稳定的。一旦你修改了一个接口,其实现都会作废,需要按照从新修改来遵守这个已发布的契约。而从,领域抽象的角度来看。java 中的interface 应该作为一个行为契约来用。所以,只有相对稳定的行为集可以作为一个接口公告和契约发布出来,让client调用,这才是java interface的真实含义。比如,发布一个Transcation interface作为,事务行为契约再好不过了。
而abstract作为接口时是相对稳定性是宽松的。如果你想增加一个方法,来让一个比较特殊的实例来作为实现。你可以直接在抽象方法实现一个默认方法,这样其他子类就不会受到较大的牵连。从领域抽象的角度来说,对象既可以描述实体也可以描述行为。然而,通常一旦描述行为,使用整个对象来描述一个整体行为的(注意不是一个行为集)。所以,总体来说,abstract应该用以描述内部行为相对不太确定的实体,或内部子行为不太确定的行为的。比如,java collection框架中的AbstractList
Erich Gamma: 接口提取出对象之间的协作关系。接口是独立于实现细节的,而且它定义了协作的语汇(vocabulary)。一旦我理解了接口,我就理解了系统的大部分。为什么?因为当我理解了所有接口以后,我应该就能够理解关于这个问题的语汇。
精辟啊。。。系统分治以后,整个系统的复杂度就转化为子系统之间的交互上了。一旦定义了套接口,那么对于各个子系统来说已经制导整个系统了,复杂的问题就变得简单了。
分享到:
相关推荐
看到的一个讲interface&abstract class 的感觉不错。
java中abstractclass和Interface.doc
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性...
Struct 、Class、Interface、Abstract各个的特性、应用场景等对比
override abstract virtual interface比较
java abstract class interface之间的区别介绍 java abstract class interface之间的区别介绍
1. Abstract 2. Normative references. 3. Terms and definitions 4. Symbols and abbreviated terms 5. Introduction 6.Scope 7.Protocol details. 8.SMBIOS support 9. Delivery of kernel authentication ...
attributeAdded(ServletContextAttributeEvent) - Method in interface javax.servlet.ServletContextAttributeListener Notification that a new attribute was added to the servlet context. attributeAdded...
an interface ........................... 17 An object provides services ................... 18 The hidden implementation .................... 19 Reusing the implementation ................... 20 ...
25、JSP中动态INCLUDE与静态INCLUDE的区别? 动态INCLUDE用jsp:include动作实现 clude page="included.jsp" flush="true" / >它总是会检查所含文件中的变化,适合用于包含动 态页面,并且可以带参数。 静态...
24、abstract class 和 interface 有什么区别? ................................................................. 18 25、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是 ...
Java中interface接口与abstractclass抽象类的区别共2页.pdf.zip
abstract 与virtual : 方法重写时都使用 override 关键字,interface中的方法和abstract方法都要求实现
28-virtual.swf 29-abstract.swf 30-interface(1).swf 31-interface(2).swf 32-interface(3).swf 33-IComparable.swf 34-IComparer.swf
自己总结了一下java中static、final、abstract和interface的用法
主要介绍了 Java abstract class 与 interface对比的相关资料,需要的朋友可以参考下
i 基于JAVA的雷电游戏的设计与实现 摘 要 雷电是电脑游戏发展史中早期最为经典的游戏... Eclipse platform 目 录 摘 要...............................................................i Abstract...................
6) Difference between abstract class and interface ? ............................................................ 10 7) Why java is platform independent? .................................................