`

第五章 专题:Java语言的接口

阅读更多

    在家里,我们可以很容易地将微波炉从一个电源插座上拔下,然后将手提电脑插上去。这就是说,对电

源来说,这些电器都是可插入构建(Pluggale Component)。他们之所以是卡插入的(Pluggable),

因为他们都具与电源插座相匹配的插头。

 

  如果可以动态地讲一个构件一走,并以另一个构件取而代之,那么这种构件就是可插入构件。

 

  大家可以看出,所谓的接口,实际上就相当于电源的插座;而可插入构件就相当于这种插座匹配的电器。

正如电器的插入行是由同一的电源插座以及每个电器都有一个与之匹配的电源插头所一样,可插入构件的

在于存在一个公用的接口,以及每个构件都实现了这个接口。
   因此,接口是实现构件的可插入性(Pluggability)的关键。
 5.1 什么是接口
   一个java接口(Interface)是一些方法特征的集合。一个接口只有方法的特征,而没有方法的实现,因此这些方法在不同的地方
被实现时,可以具有完全不同的行为。在Java语言中,Java接口还可以定义public 常量。
   当人们说到“接口”的时候,往往有这两种不同的含义:第一种是指Java接口,这是一种Java语言中存在的语法结构。另
一种仅仅是这一个类所具有的方法。前者叫做“Java接口”,或者叫做“接口”。
 比如,java.lang.Runnable就是一个Java 接口(Interface)代码示例如下:

Public interface Runnable{
//即上面所说的方法特征,所有实现该接口的类,都具必须实现run()方法。
//在这里,仅有方法声明,没有实现。
 public abstract void run();
}
 

  在使用Java接口时,需要指明接口本身,以及实现这个接口的类。一个类实现一个接口,
这种关系叫做接口继承(Interface Inheritance):而一个类是另一个类的子类,这种关系叫做实现继承
(Implementation Inheritance)。接口继承的规则与实现继承的规则不同,一个类只能继承一个类,
但是却可以实现多个接口。
  Java接口本身没有任何方法的实现,因为Java接口不涉及表象,而只描述public行为,所以java接口比java
抽象类更为抽象化(因为,java抽象类中可以有具体的方法,而接口中只有方法声明)
   一个Java接口的方法只能是抽象的(abstract)和公开的(public),Java接口不能有构造子。Java接口可以有
Public,静态的和final的属性(见下面代码示例)。
  实现同一个Java接口的两个实现类,除了具有同样的方法以外。其行为可以完全的不同。接口和类的最重要的区别是,
java接口仅仅描述方法的特征(signature),而不给出方法的任何实现;而类不仅要给出方法的特征,而且还必须给出
方法的实现。

没有接口会怎么样
简单的说,在java语言中是单继承的。而接口是可以多重实现的,
如果说没有接口话,再给一个已经有超类的类加上一个新的超类是不肯能的。
如果硬要做的话,就只好把这个心的超类加到已有的超类上面,形成超类的超类;
如果这个超类的超类的位置已经被占用,就必须加到超超超类上,等等,那么整个
类继承的关系将会非常非常的庞大。这样一来,对一个具体的可插入性设计,就变
成了对整个登记结构的所有类的修改。
因此,没有接口,可插入性就没有任何保证。
接口是对可插入性的保证
 接口使可插入行变得可能。
 在一个类等级结构中的任何一个类都可以实现一个或者多个接口,这些接口会影响到
此类的所有子类,但是不会影响到此类的任何超类。此类将必须实现这些接口所规定的
方法,而其子类则可以从此类自动继承到这些方法,同时,如果需要也可以置换掉这些
方法,或者其中的一些。
  这时侯,这些子类就具有了可插入性。
类型
  用Java接口(以及java抽象类)用来声明一个新的类型。

分享到:
评论

相关推荐

    Java与模式.清晰.rar

    第5章 专题:Java语言的接口 第6章 专题:抽象类 第7章 里氏代换原则 第8章 依赖倒转原则 第9章 接口隔离原则 第10章 合成/聚合复用原则 第11章 迪米特法则 第三部分 第12章 简单工厂模式 第13章 工厂方法模式 第14...

    Java与模式(清晰书签版) 设计模式 part3

    第5章 专题 JAVA语言的接口 第6章 专题 抽象类 第7章 里氏代换原则 第8章 依赖倒转原则 第9章 接口隔离原则 第10章 合成、聚合复用原则 第11章 迪米特法则 第12章 简单工厂模式 第13章 工厂方法模式 第14章 抽象工厂...

    Java数据结构和算法中文第二版

    第5章 链表 链结点(Link) LinkList专题Applet 单链表 查找和删除指定链结点 双端链表 链表的效率 抽象数据类型 有序链表 双向链表 迭代器 小结 问题 实验 编程作业 第6章 递归 三角数字 阶乘 变位...

    Java数据结构和算法中文第二版(1)

    第5章 链表 链结点(Link) LinkList专题Applet 单链表 查找和删除指定链结点 双端链表 链表的效率 抽象数据类型 有序链表 双向链表 迭代器 小结 问题 实验 编程作业 第6章 递归 三角数字 阶乘 ...

    Java数据结构和算法中文第二版(2)

    第5章 链表 链结点(Link) LinkList专题Applet 单链表 查找和删除指定链结点 双端链表 链表的效率 抽象数据类型 有序链表 双向链表 迭代器 小结 问题 实验 编程作业 第6章 递归 三角数字 阶乘 ...

    Java与模式(含示例代码)

    第5 章 专题:Java 语言的接口........59 5.1 什么是接口...................................59 5.2 为什么使用接口...........................60 5.3 Java 接口常见的用法...................63 第6 章 专题:...

    精通Qt4编程(第二版)源代码

    \ 第5章 布局管理 卢传富布局管理是GUI应用程序编程的一个重要方面。Qt提供了多种布局管理部件,包括Qt布局管理器、分裂器、栈部件、工作空间部件和多文档区部件等。本章一一介绍了这些部件,并举例说明了它们在图形...

    精通qt4编程(源代码)

    \ 第5章 布局管理 卢传富布局管理是GUI应用程序编程的一个重要方面。Qt提供了多种布局管理部件,包括Qt布局管理器、分裂器、栈部件、工作空间部件和多文档区部件等。本章一一介绍了这些部件,并举例说明了它们在图形...

    Eclipse权威开发指南2.pdf

    第5章 协同使用Eclipse 129 5.1 Eclipse对CVS的支持...... 130 5.2 Eclipse的通用小组支持...... 131 5.2.1 Eclipse小组支持的基本原则..... 132 5.2.2 配置小组支持..... 132 5.3 为初学者准备的CVS概述...... 133...

    2009.6.19—30举办3S研讨会暨Google Earth与Google Map等仿真建模与共享及ARCGIS与遥感高级程序员培训班

    第五单元:国际3S最新技术应用--介绍ArcGIS9高级应用与river tools河流地形绘制软件及GIS最新技术在水文、地质和生态与在可持续发展中的应用及答疑:(4-6课时) 1)地统计应用与ArcGIS地统计分析;2). 遥感与GIS...

    Eclipse权威开发指南3.pdf

    第5章 协同使用Eclipse 129 5.1 Eclipse对CVS的支持...... 130 5.2 Eclipse的通用小组支持...... 131 5.2.1 Eclipse小组支持的基本原则..... 132 5.2.2 配置小组支持..... 132 5.3 为初学者准备的CVS...

    Eclipse权威开发指南1.pdf

    第5章 协同使用Eclipse 129 5.1 Eclipse对CVS的支持...... 130 5.2 Eclipse的通用小组支持...... 131 5.2.1 Eclipse小组支持的基本原则..... 132 5.2.2 配置小组支持..... 132 5.3 为初学者准备的CVS...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

Global site tag (gtag.js) - Google Analytics