网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  《java与模式》笔记-----抽象类和接口     
  文章作者:未知  文章来源:水木森林  
  查看:110次  录入:管理员--2007-11-17  
 
抽象类和接口







什么是接口:接口就是一些方法特征的集合------接口是对抽象的抽象。







什么是抽象类:抽象类对某具体类型的部分实现------抽象类是对具体的抽象。







方法特征包括:方法的名字、参数的数目、参数的类型。不包括:返回类型、参数名字、和抛出的异常。







接口是类型转换的前提、是动态调用的保证。实现某一接口就完成了类型的转换(多重继承);动态调用只关心类型,不关心具体类。







         --------------------------------------------------------------------------------------------------------------------------------------







         java接口(抽象类)用来声明一个新的类型。







java设计师应当主要使用接口和抽象类将软件单位与内部和外部耦合起来。







换言之,应当使用java接口和抽象类而不是具体类进行变量的类型声明、参数的类型声明、方法的返回类型声明、以及数据类型的转换等。







当然一个更好的做法是仅仅使用接口,而不是抽象类来做上面这些事情。







在理想的情况下,一个具体类应当只实现接口和抽象类中声明的方法,而不应当给出多余的方法!







接口和抽象类一般作为一个类型等级结构的起点。







接口比抽象类更为抽象所以优先使用接口声明抽象类型!







--------------------------------------------------------------------------------------------------------------------------------------







抽象类和接口







         抽象类仅提供一个类的部分实现。抽象类可以有实例变量、以及一个或多个构造函数。抽象类可以同时又抽象方法和具体方法。







         一个抽象类不会有实例,它的构造函数不能被客户端用来创建实例。一个抽象类的构造函数可以被其子类调用,从而使一个抽象类的所有子类可以有一些共同的实现,而不同的子类可以在此基础上有不同的实现。







 







接口比抽象类更为抽象所以有线使用接口声明抽象类!







抽象类是用来继承的。(具体类不是用来继承的,“只要有可能不要从具体类继承---scott meryes”)。







抽象类设计原则:







1,   抽象类应当拥有尽可能多的代码!(公用方法)。代码集中于抽象的方向。







2,   抽象类应当拥有尽可能少的数据!(公共属性)。数据集中于具体的方向。







继承复用的使用条件------- peter coad条件







1.        子类是超类的一个特殊种类而不是超类的一个角色!正确区分“has-a”“is-a”的关系。







2.        子类之间不应发生替换!?







3.        子类具有扩展超类的责任,而不是置换(override)掉或注销(nullify)掉的责任。







4.        只有在分类学角度上有意义时才可以使用继承,不要从具体类继承。







接口和抽象类的区别:







1.          抽象类可以提供某些方法的实现。如果向抽象类中加入一个新的具体的方法,那么所有的子类一下子就得到了这个方法。接口做不到这一点!(这也许是抽象类的唯一优点)。







2.因java的单根结构限制,只类只能实现一个抽象类类型,而接口类型这无此限制。这使抽象类作为类型定义工具的效能落后于接口。接口是定义混合类型(实现多从继承)的理想工具。







2。 从代码重构的角度上讲,将一个具体类从构成一个接口类型实现起来更容易。
 
 
上一篇: java 5.0中实现jsr-223的方法    下一篇: 《学不会的java,消不了的忧愁》之五——献给那些酷爱计算机编程的人们
  相关文档
使用 mock 对象进行单元测试的实例讲解 11-16
java threading中的final变量 11-17
mini java编译器(一) 11-17
java基础-设计一个java类所需的方法 11-17
java nio api详解 11-17
spirng下的log4j设置 [引用] 11-17
eclipse开发j2me程序之插件安装 11-16
java设计模式之visitor 11-17
hacking swing: 一个jdbc表控件模型 11-17
javaapplet编程响应鼠标键盘 11-17
apache动了java奶酪(news) 11-17
如何使用jmeter测试java项目 11-17
jsp网页编程(ppt) 11-17
servlets提供了一个cgi开发的简单替换方法 11-17
j2me学习——rms从入门到精通之二 11-17
shark中的toolagent用法-javascripttoolagent 11-17
java 技巧:步入本地方法圣殿的七个步骤 11-17
javascript在e-mail中的应用 11-17
为什么用“==”与“equal”得到的输出不同 11-17
从重构的角度学习bridge设计模式 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息