官方文档的尝试性翻译
如你已经学到的,对象通过定义函数的方法与外部交流。函数为对象与外界的接口。例如,你电视机前的按钮,是你和它的塑料外壳电布线的接口。你按下了“电源”按钮来控制电视机的关灭。
推而广之,接口就是一组没有实现的相关函数的集合。如果把自行车的行为定义为接口,可能会有下面的结果:
interface Bicycle{
//wheel revolutions per minute
void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
applyBrakes(int decrement);
}
若要实现这个接口,你的类的名字可能会改变(例如以某品牌的自行车ACMEBicycle为例)而且在声明类的时候必须用implements关键字。
class ACMEBicycle implemments Bicycle{
int cadence = 0;
int speed = 0;
int gear = 1;
//编译器将要调用那个方法
//changeCandence,changeGear,speedUp和applyBrakes
//全被实现。如果这些函数不在此类中出现,编译器会报错
void changeCandance(int newValue){
candance = 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("candance:"+candance+" speed:"+speed+" gear:"+gear);
}
}
实现一个接口使得类的动作更加规范。接口组织了类与外部世界的合同,并且这个合同在编译阶段是被强制实现的。如果你的类号称实现了一个接口,那么在它成功编译之前,所有接口定义的方法必须出现在它的源代码中。
注意:事实上要编译ACMEBicycle类,你需要在接口方法的前面添加关键字public。你会在之后的课程中明白为什么要这样做。