当一个软件有多个共同的开发者一起完成时,他们需要制定一个"契约"规定他们的软件是怎么交互的.每一个组不需要知道其他组的代码是怎么编写的.通常,接口就是这种"契约".
例如,想象一下我们的未来社会,汽车不需要人为操作,只需用计算机控制就可以把乘客从一个地方送到另一个地方.汽车制造厂编写软件用来控制汽车启动,停止,加速,向左走等等.其他厂商比如电子导航仪厂商,让计算机系统接受GPS位置数据,无线传输交通状况并使用这些信息来开车.
这个汽车厂商必须公布一个工业标准接口用来讲清楚什么方法可以被调用让汽车移动.导航仪厂商就能通过调用这些接口里的方法来编写软件达到控制汽车目的.两个厂商都不需要知道对方是如何实现他们自己软件的.
java中的接口
在java语言中,一个接口(interface)是一个引用类型,就像一个类,但是只能包含常量,方法签名,nested types没有方法体.接口不能不实例化-只能被某个类实现或者是被其他的接口所继承.
定义一个接口就好像创建一个新的类:
public interface OperateCar {
// 常量声明
// 方法签名
int turn(Direction direction, // An enum with values RIGHT, LEFT
double radius, double startSpeed, double endSpeed);
int changeLanes(Direction direction, double startSpeed, double endSpeed);
int signalTurn(Direction direction, boolean signalOn);
int getRadarFront(double distanceToCar, double speedOfCar);
int getRadarRear(double distanceToCar, double speedOfCar);
......
// more method signatures
}
注意:方法签名没有花括号,是以分号结尾的.
为了使用接口,你需要写一个类实现(implements)这个接口.当这个类提供了在接口所有的方法后,这个类就可以被实例化.
public class OperateBMW760i implements OperateCar {
// 操纵汽车的方法的实现 --
// 例如:
int signalTurn(Direction direction, boolean signalOn) {
//打转弯灯
//关闭转弯灯
}
// 其他实现
}
在以上的自动汽车的例子中,汽车厂商将会实现这个接口.当然雪佛兰的实现跟丰田公司的实现是不一样的,但是他们都坚持相同的接口.导航仪制造商就是这个接口的使用者,导航系统将会调用接口中的方法:转弯,刹车,加速等等.
接口APIs
自动汽车的例子像我们展示了接口作为工业标准API的用法.在商业软件中产品中也是相同的.典型的,某个公司销售一个软件包给另外一个想要把这个软件包用在自己的软件中的公司,这个软件包中包含了很多方法.比如有一个数字图像处理的软件包卖给一个做面向最终用户图像程序的公司.这个图像处理公司公布给他的客户一个接口,并且自己写了一系列的类来实现这个接口.这个面向最终用户的公司使用接口中定义的方法.这个图像处理公司的实现方法是保密的.
接口和多继承
在java中接口还扮演了一个非常重要的角色.尽管接口跟类联合起来工作,但是接口不属于类层次体系.java语言不允许多继承,但是接口提供了一种变通的方法.
在java中,一个类只能继承"一"个类而可以实现多个接口,所以对象可以有多种类型:他们本身的类型和所有他们实现的接口类型.这意味着,如果一个变量被声明为一个接口类型,他就可以引用任意实现了此接口的类的实例.
分享到:
相关推荐
内含概述,语法简介,基本数据类型介绍,类和对象浅析,继承多态,访问控制,抽象类,接口,几大常用类和GUI的有关编程设计。适合0基础或初学者自学。
Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式...本视频教程帮助你从新手小白到成为精通JAVA的高手,从软件的安装,功能的介绍和使用,实战演习讲解等各大维度进行详细的教学.
Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式...本视频教程帮助你从新手小白到成为精通JAVA的高手,从软件的安装,功能的介绍和使用,实战演习讲解等各大维度进行详细的教学.
Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式...本视频教程帮助你从新手小白到成为精通JAVA的高手,从软件的安装,功能的介绍和使用,实战演习讲解等各大维度进行详细的教学.
Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式...本视频教程帮助你从新手小白到成为精通JAVA的高手,从软件的安装,功能的介绍和使用,实战演习讲解等各大维度进行详细的教学.
Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式...本视频教程帮助你从新手小白到成为精通JAVA的高手,从软件的安装,功能的介绍和使用,实战演习讲解等各大维度进行详细的教学.
3.1.1 集合概述 54 3.1.2 Collection接口 54 3.1.3 泛型(Generics) 56 3.1.4 Map接口 57 3.2 练习 59 3.2.1 创建课程管理系统 59 3.3 小结 68 第4章 数据传送的管道——JAVA I/O 71 4.1 讲解 72 4.1.1 流...
3.1.1 集合概述 54 3.1.2 Collection接口 54 3.1.3 泛型(Generics) 56 3.1.4 Map接口 57 3.2 练习 59 3.2.1 创建课程管理系统 59 3.3 小结 68 第4章 数据传送的管道——JAVA I/O 71 4.1 讲解 72 4.1.1 流...
JavaSE 之前整理的笔记,一共16章:1.Java概述,2.基本数据类型与运算符,3.流程控制与数组,4.面向对象1(类和对象 方法 构造方法),5. 面向对象2(成员变量与局部变量 常用系统类 包 访问控制符 String),6.面向对象3...
Java SE实践教程 源代码 2010-9-13 声明:在网上找了好久才找到这个源码,真不容易啊,请大家多多支持。 2010-9-13 内容简介:此书结合具体实例讲解,通俗易懂,又不乏深度。我觉得这本书写的确实不错,堪称经典,...