|
接口实际上是一组抽象方法的集合。接口本身的访问控制只能够是public和默认的,不能是private和protected。因为接口的目的就是让其他的类来实现其中的方法或使用其中的常量。因此,接口中的方法永远是public和abstract,而接口中的常量永远是public、final和static。为接口定义方法和常量时,不需要加任何修饰符。
|
|
|
|
接口定义很像类定义,它使用的关键字是interface。下面是一个接口的通用形式:
|
|
|
|
其中,access要么是public,要么就没有用修饰符。当没有访问修饰符时,则是默认访问范围。当它声明为public时,则接口可以被任何代码使用。name是接口名,它可以是任何合法的标识符。注意定义的方法没有方法体。它们以参数列表后面的分号作为结束。它们本质上是抽象方法;在接口中指定的方法没有默认的实现。每个包含接口的类必须实现所有的方法。接口声明中可以声明变量。它们一般是final和static型的,意思是它们的值不能通过实现类而改变。它们还必须以常量值初始化。如果接口本身定义成public,所有方法和变量都是public。
|
|
|
|
一旦接口被定义,一个或多个类可以实现该接口。为实现一个接口,在类定义中包括implements子句,然后创建接口定义的方法。一个包括implements子句的类的一般形式如下:
|
|
|
|
同样,access要么是public,要么是没有修饰符的。如果一个类实现多个接口,这些接口被逗号分隔。如果一个类实现两个声明了同样方法的接口,那么相同的方法将被其中任何一个接口客户使用。实现接口的方法必须声明成public。而且实现方法的类型必须严格与接口定义中指定的类型相匹配。
|
|
|
|
接口可以通过运用关键字extends被其他接口继承。语法与继承类是一样的。当一个类实现一个继承了另一个接口的接口时,它必须实现接口继承链表中定义的所有方法。例如:
|
|
|
|