你已经学过,对象通过暴露的方法定义它们和外部世界的交互。方法形成对象和外部世界的接口(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 {
// remainder of this class implemented as before
}
通过实现接口,类可以更加正式地说明它承诺提供的行为。接口构成了类和外部世界之间的契约,并且这个契约在编译时由编译器强制实施。如果你的类声明实现一个接口,那么这个接口定义的所有方法都必须出现在其源代码中,否则类就不能成功编译。