正如你已经学习了的,每个对象通过它所暴露的方法来和外界交互。方法形成了对象和外界的接口,举例来说,电视机前面的按钮就是你和电视机塑料壳另一端的线圈的接口。你按下电源键就可以让电视机工作或者关闭。
最常见的,接口就是一组相关联的没有方法体的方法。如果将自行车的行为设计成一个接口,可能如下所示:
interface Bicycle { // wheel revolutions per minute 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; // The compiler will now require that methods // changeCadence, changeGear, speedUp, and applyBrakes // all be implemented. Compilation will fail if those // methods are missing from this class. 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); } }实现了一个接口后,类可以更加正式地提供它的行为。接口形成了类与外界的协议,而且这个协议在编译时会被编译器强制校验。假如你的类声明了一个接口,如果它想成功的编译,那么接口中定义的所有方法都必须出现在它的代码中。