- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
理解 java 中接口
2007 年 05 月 12 日 星期六 21:42 好的面向对象编程要求类设计人员隐藏那些不需要类的使用人员了解的信息。对于 Java 编程语言,这样的访问可以通过使用关键字 private, protected, 和 public 来控制。这些关键字控制类内部的变量和方法是否可见,但是不好的类设计导致太多的可见信息和方法没有被很好的封装。
封装的一种方式是通过使用接口(Interface)实现的。接口提供一种途径,使类隐藏其处理的特定事物的细节,仅对外公布它必须支持的属性。对于编程所涉及的,你可以修改类的实现, 而不修改它的调用,因为属性本身没有改变,修改的仅仅是类的实现。
一个接口被经常用得到的地方是 Collection Framework。这个框架定义了一组非常重要的接口,它们是由一组多个类实现的。通过仅仅研究主要的接口,你可以有效的掌握整个框架,因为特别的实现类一般不影响设计的整体。
例如,List 接口定义了一个有序的元素集合。可用地实现包括 ArrayList 和 LinkedList, 它们都实现了 List 接口。当你的程序需要处理 List 时,不必考虑它是 ArrayList 还是LinkedList,只要知道所选用的类的属性即可。这个属性就是接口。
通过实现类的接口,并且在类设计时仅对外公布接口,你就有效的封装了类的定义,这样后台实现的变动将对系统其它部分的影响最小。
以 ArrayList 和 LinkedList 为例。将 ArrayList 看作一个可增长的数组对象(指是存储对象,而不是原始数据)。当类实现了 List 的全部接口时,它的特性在特定条件下是可以优化的。
例如,如果你的程序是要队列表中的数据进行频繁的随机访问,(例如,显示第 3,12, 2,和 25 项数据)ArrayList 类提供对列表中每一个数据快速查询。快速查询是以在列表中间添加和删除数据的速度为代价的。如果后一种行为是你需要的,那么 LinkedList 类是一个好的选择。它提供快速的顺序访问、添加和删除,但是,代价是慢速随机查询。
在处理 ArrayList 和 LinkedList 时,有两种方式创建对象: List cityList = new ArrayList() ;
LinkedList peopleList = new LinkedList() ;
两个代码段都是正确的,但是这两行代码之间存在的显著的差别。第一行表示我们要创建一个 ArrayList,但是我们只需要把它作为一个 List 来访问。第二行正好相反。是, LinkedList 项目被创建了,ArrayList 也一样。但是,声明部分说明它只能作为LinkedList 来访问,这就数它的最大区别。
理解接口真正变的重要是在这两行代码的用户确定“查询项目n”比在位置 m 处删除
(或添加)项目更为重要时。
PeopleList 变量被声明为 LinkedList 类型。这不是它本身的问题,因为你研究的更深层次的内容,你将发现 peopleList 在任何地方都被作为 LinkedList 对象处理。在你对 peopleList 使用 LinkedList 特有的方法的同时,如果你想把它作为 ArrayList 来处理,将会出现问题。
List peopleList = new ArrayList() ;
通过学习仅使用接口来处理任何对象,你将发现在设计完成之后修改实现,你需要修 改的仅仅是声明部分,除此之外,没有任何代码改动。这就是接口的绝妙之处。因为类的最初声明是 LinkedList,当类型变为List 时意味着象 addFirst 或 addLast 这样的方法是无效的, 因为新的 peopleList 的类型是 List,它没有这些方法。
这种基于接口设计的代码,就像 Collection Framework 所向大家承诺的那样,任何人编写的代码是以循环构造方式进行的,而无需知道使用的是哪个 Collection。创建的类是被限制为提供接口的完全实现。除此之外,新代码将不能被编译。
作为实例,下面的程序创建一组集合。每个集合提供一个系统定义的Iterator 这样集合的每个元素可以被访问。这个 iterator 将被传递到帮助例程,在这里集合的独立元素将被打印。
import java.util.*; public class Interfaces {
public static void main(String args[]) { Properties props = System.getProperties(); Set keySet = props.keySet(); dumpIterator(keySet.i
文档评论(0)