Java Interface简介
正如大家所了解到的, 对象通过它们公开的方法来定义它们与外部世界的交互。方法形成了对象与外部世界的接口;例如,电视机前面的按钮是你和塑料外壳另一侧电线之间的接口。你按下“电源”按钮来打开和关闭电视。
在其最常见的形式中,接口是一组具有空主体的相关方法。接口中只能定义抽象方法,这些方法默认为 public abstract 的,因而在声明方法时可以省略这些修饰符。试图在接口中定义实例变量、非抽象的实例方法及静态方法,都是非法的。如果指定自行车的行为为一个接口:
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);
}
}
实现接口允许类对其承诺提供的行为更加正式。接口在类和外部世界之间形成了一个约定,这个约定在构建时由编译器强制执行。如果类声称实现一个接口,则该接口定义的所有方法必须出现在其源代码中,然后类才能成功编译。