接口
软件工程中存在许多情况,当不同的程序员团队同意一份“合约”来阐明他们的软件如何交互时很重要,每个组都应该能够在不知道如何编写其他组代码的情况下编写代码,一般来说,接口就是这样的合约。
例如,想象一个未来主义社会,计算机控制的机器人汽车在没有人工操作员的情况下将乘客运送到城市街道,汽车制造商编写操作汽车的软件(当然是Java) - 停止,启动,加速,向左转,等等,另一个工业集团,电子制导仪器制造商,使计算机系统接收GPS(全球定位系统)位置数据和无线传输交通状况,并利用该信息来驾驶汽车。
汽车制造商必须发布一个行业标准的接口,详细说明可以调用什么方法来使汽车移动(任何汽车,来自任何制造商),然后,指导制造商可以编写调用接口中描述的方法的软件来命令汽车,工业集团都不需要知道其他集团的软件是如何实现的,事实上,每个小组都认为其软件具有高度专有性,并保留随时修改它的权利,只要它继续遵守已发布的接口即可。
Java中的接口在Java编程语言中,接口是类似于类的引用类型,它只能包含常量、方法签名,默认方法、静态方法和嵌套类型,方法体仅适用于默认方法和静态方法,接口无法实例化 — 它们只能由类实现或由其他接口继承,继承将在本课程后面讨论。
定义接口类似于创建新类:
public interface OperateCar { // constant declarations, if any // method signatures // An enum with values RIGHT, LEFT int turn(Direction direction, 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 }
请注意,方法签名没有大括号,并以分号结束。
要使用接口,请编写实现该接口的类,当可实例化的类实现接口时,它为接口中声明的每个方法提供方法体,例如:
public class OperateBMW760i implements OperateCar { // the OperateCar method signatures, with implementation -- // for example: int signalTurn(Direction direction, boolean signalOn) { // code to turn BMW"s LEFT turn indicator lights on // code to turn BMW"s LEFT turn indicator lights off // code to turn BMW"s RIGHT turn indicator lights on // code to turn BMW"s RIGHT turn indicator lights off } // other members, as needed -- for example, helper classes not // visible to clients of the interface }
在上面的机器人汽车示例中,汽车制造商将实现该接口,当然,雪佛兰的实现将与丰田的实现大不相同,但两家制造商都将遵循相同的接口,作为该接口的客户,导航制造商将构建使用汽车位置GPS数据、数字街道地图和交通数据驱动汽车的系统,这样,导航系统将调用接口方法:转弯,改变车道,制动,加速等。
接口作为API机器人汽车示例显示了用作行业标准应用程序编程接口(API)的接口,API在商业软件产品中也很常见,通常,公司销售的软件包包含另一家公司希望在其自己的软件产品中使用的复杂方法。一个例子是销售给制作最终用户图形程序的公司的数字图像处理方法包,图像处理公司编写其类以实现接口,该接口向其客户公开,然后,图形公司使用接口中定义的签名和返回类型调用图像处理方法。虽然图像处理公司的API是公开的(对其客户),但它的API实现仍然是一个严密保密的秘密 — 实际上,只要它继续实现其客户所依赖的原始接口,它可以在以后修改实现。
接口总结接口声明可以包含方法签名、默认方法、静态方法和常量定义,具有实现的方法只是默认和静态方法。
实现接口的类必须实现接口中声明的所有方法。
可以在任何可以使用类型的地方使用接口名称。
上一篇:注解 下一篇:定义接口文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/72551.html
Java™ 教程 Java教程是为JDK 8编写的,本页面中描述的示例和实践没有利用在后续版本中引入的改进。 Java教程是希望使用Java编程语言创建应用程序的程序员的实用指南,其中包括数百个完整的工作示例和数十个课程,相关课程组被组织成教程。 覆盖基础知识的路径 这些教程以书籍的形式提供,如Java教程,第六版,前往Amazon.com购买。 入门 介绍Java技术和安装Java开发软件并使用...
集合介绍 本节介绍Java集合框架,在这里,你将了解集合是什么以及它们如何使你的工作更轻松、程序更好,你将了解构成Java集合框架的核心元素 — 接口、实现、聚合操作和算法。 集合 — 有时称为容器 — 只是一个将多个元素组合到一个单元中的对象,集合用于存储、检索、操作和传递聚合数据。通常,它们代表形成自然组的数据项,例如扑克牌(卡片集合)、邮件文件夹(信件集合)或电话目录(名称到电话号码的映射)...
集合接口 核心集合接口封装了不同类型的集合,如下图所示,这些接口允许独立于其表示的细节来操纵集合,核心集合接口是Java集合框架的基础,如下图所示,核心集合接口形成层次结构。 showImg(https://segmentfault.com/img/bVbntJW?w=402&h=146); Set是一种特殊的Collection,SortedSet是一种特殊的Set,依此类推,另请注意,层次结构...
定义接口 接口声明由修饰符、关键字interface、接口名称、逗号分隔的父接口列表(如果有)和接口体组成,例如: public interface GroupedInterface extends Interface1, Interface2, Interface3 { // constant declarations // base of natural logar...
Queue接口 Queue是在处理之前保存元素的集合,除了基本的Collection操作外,队列还提供额外的插入、删除和检查操作,Queue接口如下。 public interface Queue extends Collection { E element(); boolean offer(E e); E peek(); E poll(); E remov...
阅读 1716·2021-11-22 12:09
阅读 1454·2019-08-30 13:22
阅读 2086·2019-08-29 17:00
阅读 2636·2019-08-29 16:28
阅读 2946·2019-08-26 13:51
阅读 1175·2019-08-26 13:25
阅读 3239·2019-08-26 12:14
阅读 3007·2019-08-26 12:14