1.接口的定义

接口的定义使用 interface 关键字

1
2
3
4
5
6
7
8
9
10
11
12
[public] interface interface_name [extends interface1_name[, interface2_name,…]] {
// 接口体,其中可以包含定义常量和声明方法
[public] [static] [final] type constant_name = value; // 定义常量
[public] [abstract] returnType method_name(parameter_list); // 声明方法
}//[]括号内东西可选


interface_name 表示接口的名称
interface1_name 表示要继承的接口名称
constant_name 表示变量名称
returnType 表示方法的返回值类型
parameter_list 表示参数列表,在接口中的方法是没有方法体的
  • public 表示接口的修饰符,当没有修饰符时,则使用默认的修饰符,此时该接口的访问权限仅局限于所属的包
  • 方法的声明不需要其他修饰符,在接口中声明的方法,将隐式地声明为公有的(public)和抽象的(abstract)
  • 接口中声明的变量其实都是常量,变量将隐式地声明为public、static 和 final,所以接口中定义的变量必须初始化
  • 接口没有构造方法,不能被实例化

2.接口的实现

实现则使用 implements 关键字,且implements 部分必须放在 extends 部分之后。

1
2
3
4
5
<public> class <class_name> [extends superclass_name] [implements interface1_name[, interface2_name…]] {
// 主体
}
superclass_name:需要继承的父类名称;
interface1_name:要实现的接口名称。

实现接口需要注意以下几点:

  • 一个类可以实现一个或多个接口,如果一个类需要实现多个接口,则多个接口之间以逗号分隔。
  • 一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法。否则,该类也必须定义成抽象类。
  • 接口也可以被继承,使用关键字extends声明一个接口是另一个接口的子接口。子接口将继承父接口中的 全部方法和常量。一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类。

3.接口回调

定义:可以把某一接口的实现类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。