最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Java™ 教程(接口)

XAMPP下载 文, 员 19浏览 0评论
 接口
软件工程中存在许多情况,当不同的程序员团队同意一份“合约”来阐明他们的软件如何交互时很重要,每个组都应该能够在不知道如何编写其他组代码的情况下编写代码,一般来说,接口就是这样的合约。

例如,想象一个未来主义社会,计算机控制的机器人汽车在没有人工操作员的情况下将乘客运送到城市街道,汽车制造商编写操作汽车的软件(当然是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实现仍然是一个严密保密的秘密 — 实际上,只要它继续实现其客户所依赖的原始接口,它可以在以后修改实现。

定义接口
接口声明由修饰符、关键字interface、接口名称、逗号分隔的父接口列表(如果有)和接口体组成,例如:

public interface GroupedInterface extends Interface1, Interface2, Interface3 {

// constant declarations

// base of natural logarithms
double E = 2.718282;

// method signatures
void doSomething (int i, double x);
int doSomethingElse(String s);
}
public访问修饰符表示该接口可以被任何包中的任何类使用,如果未指定接口是公共接口,则只能在与接口相同的程序包中定义的类上访问你的接口。

接口可以继承其他接口,就像类的子类或继承另一个类一样,但是,虽然类只能继承另外一个类,但接口可以继承任意数量的接口,接口声明包括它继承的所有接口的逗号分隔列表。

接口体
接口体可以包含抽象方法、默认方法和静态方法,接口中的抽象方法后跟分号,但没有大括号(抽象方法不包含实现),默认方法使用default修饰符定义,静态方法使用static关键字定义,接口中的所有抽象、默认和静态方法都是隐式public,因此你可以省略public修饰符。

此外,接口可以包含常量声明,接口中定义的所有常量值都是隐式public、static和final,你可以省略这些修饰符。

转载请注明:XAMPP中文组官网 » Java™ 教程(接口)