Java教程适用于JDK 8。本页中描述的示例和实践不利用后续版本中引入的改进,并可能使用已不再可用的技术。
请参阅Java语言变更以获取Java SE 9及其后续版本中更新的语言特性的摘要。
请参阅JDK发行说明以获取有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息。
如你已经学到的,对象通过其公开的方法来定义与外部世界的交互。方法构成了对象与外部世界的接口;例如,电视机前面的按钮就是你与其塑料外壳另一侧的电线之间的接口。按下“电源”按钮来打开或关闭电视机。
在最常见的形式中,接口是一组相关方法,这些方法的主体为空。如果将自行车的行为指定为接口,可能如下所示:
interface Bicycle { // 轮子每分钟旋转数 void changeCadence(int newValue); void changeGear(int newValue); void speedUp(int increment); void applyBrakes(int decrement); }
要实现该接口,你的类的名称将会改变(例如,变为某个自行车品牌,如ACMEBicycle
),并且你需要在类声明中使用implements
关键字:
class ACMEBicycle implements Bicycle { int cadence = 0; int speed = 0; int gear = 1; // 现在编译器要求这些方法 // changeCadence、changeGear、speedUp和applyBrakes // 都必须实现。如果这些方法在类中缺失,则编译将失败。 void changeCadence(int newValue) { cadence = newValue; } void changeGear(int newValue) { gear = newValue; } void speedUp(int increment) { speed = speed + increment; } void applyBrakes(int decrement) { speed = speed - decrement; } void printStates() { System.out.println("cadence:" + cadence + " speed:" + speed + " gear:" + gear); } }
实现接口使得一个类对其所承诺提供的行为变得更加正式。接口形成了类与外部世界之间的契约,这个契约在编译时由编译器来强制执行。如果你的类声称实现了一个接口,那么在类的源代码中必须出现该接口定义的所有方法,否则类将无法成功编译。