接口是Java语言的重要概念之一,接口指用interface 关键字定义的特殊类,也称接口类型,它描述系统对外提供服务,但不包括具体实现。 接口电影了多个类的共同行为规范,这些行为是对象与外部交流的通道。 接口体现了规范与现实分离的设计原则,提高了系统的可扩展性和可维护性。
定义接口
接口是特殊类,使用interface 定义
[修饰符] interface 接口名 [extends 父接口列表] {
//(1)声明静态常量;
//(2)声明抽象方法;
//(3)定义默认方法;
//(4)定义静态方法;
}
(1)声明静态常量的默认修饰符 public final static,也可声明为final static。
(2)声明抽象方法的默认修饰符 public abstract。
(3)定义默认方法的修饰符default,该方法是实体方法,在实现接口的子类中可以调用。
(4)定义静态方法的修饰符static,该方法是实体方法,用接口名直接调用。
下面代码段定义接口MyInterface,第2行定义静态常量,第3行声明抽象方法,第4行定义默认方法(default修饰),该方法有方法体,第7行定义类方法(static修饰),该方法也有方法体
interface MyInterface { //接口
double PI = 3.14; //静态常量,默认修饰public final static
void show(String msg); //抽象方法,默认修饰符 public abstract
public default void printX() { //默认方法
System.out.println ("接口默认方法");
}
public static void printY() { //静态方法
System.out.println(""接口静态方法");
}
}
子类实现接口
子类通过implements 关键字实现接口,需要覆写接口中所有抽象方法
class 子类名 implements 接口A,接口B, ... {
// 成员数据;
// 成员方法;
// 实现接口的所有抽象方法;
}
子类实现接口时注意以下4点。
(1)一个子类能实现多个接口,在implements后用逗号隔开多个接口名
(2)如果实现接口的子类是实体类,则它必须实现该接口的所有抽象方法
(3)如果实现接口的子类是抽象类,则它可不实现该接口所有的抽象方法
(4)接口的抽象方法的默认访问权限控制符public,子类在覆写接口的抽象方法时,必须显式地使用public,因为子类覆写父类方法时,子类方法访问控制权限不能小于父类的访问控制权限