文档

Java™教程
隐藏目录
什么是接口?
导航:学习Java语言
课程:面向对象编程概念

什么是接口?

如你已经学到的,对象通过其公开的方法来定义与外部世界的交互。方法构成了对象与外部世界的接口;例如,电视机前面的按钮就是你与其塑料外壳另一侧的电线之间的接口。按下“电源”按钮来打开或关闭电视机。

在最常见的形式中,接口是一组相关方法,这些方法的主体为空。如果将自行车的行为指定为接口,可能如下所示:

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);
    }
}

实现接口使得一个类对其所承诺提供的行为变得更加正式。接口形成了类与外部世界之间的契约,这个契约在编译时由编译器来强制执行。如果你的类声称实现了一个接口,那么在类的源代码中必须出现该接口定义的所有方法,否则类将无法成功编译。


注意: 要编译ACMEBicycle类,你需要在实现的接口方法前面添加public关键字。后面在关于类和对象接口和继承的教程中,你将了解到这样做的原因。

上一页: 什么是继承?
下一页: 什么是包?