翻译自ORACLE Java Tutorials –What Is an Interface?
正如你已经学到的,对象通过他们公开的方法来定义与外部世界的交互。 方法形成物体与外界接口; 例如,电视机前面的按钮是您和塑料外壳另一侧的电线之间的接口。 按“电源”按钮打开和关闭电视机。
在其最常见的形式,接口是一组与空机构相关方法。 如果指定为接口,自行车的行为可能如下所示:
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);
}
}
实现接口允许类对其承诺提供的行为变得更加正式。 接口在类和外部世界之间形成合约(contract ),并且该合约在编译器的构建时执行。 如果你的类声称实现一个接口,那么该接口定义的所有方法都必须在它的源代码中显示,然后类才能成功编译。
注意:要实际编译ACMEBicycle类,您需要将public关键字添加到已实现的接口方法的开头。 稍后您可以在类和对象以及接口和继承的课程中了解原因。
网友评论