1.接口的定义
接口指用interface关键字定义的特殊类,也成为接口类型,它描述系统对外提供的服务,但不包含具体实现。
例如:飞机和小鸟都要飞,定义接口飞,只要飞机和小鸟类实现该接口,就表示他们的对象能提供“飞”服务;照相机、手机、平板计算机都有拍照功能,定义拍照接口,只要照相机、手机、平板计算机等类实现该接口,就表示它们的对象能提供“照相”服务。
接口格式:
[修饰符] interface 接口名 [extends父接口列表] {
//(1)声明静态变量
//(2)声明抽象方法
//(3)定义默认方法
//(4)定义静态方法
}
(1)声明静态常量的默认修饰符public final static,也可以声明为final static.
(2)声明抽象方法的默认修饰符public abstract。
(3)定义默认方法的修饰符default,该方法是实体方法,在实现接口的子类中可以调用。
(4)定义静态方法的修饰符static,该方法是实体方法,用接口名直接调用。
/*接口*/
package com.Mai6;
public 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("接口静态方法");
}
}
class MyClass implements MyInterface{ //子类实现接口
void display() {
System.out.println("子类方法");
}
@Override
public void show(String msg) { //覆写接口的抽象方法
System.out.println("覆写接口的抽象方法");
}
}
class Demo30 {
public static void main(String[] args) {
MyClass mc = new MyClass();
mc.show("接口的抽象方法"); //子类对象调用实现的抽象方法
mc.printX(); //通过子类调用接口的默认方法
MyInterface.printY(); //通过接口名调用接口的类方法
}
}
子类实现接口时需要注意以下 4点:
(1)一个子类能实现多个接口,在implements后用逗号隔开多个接口名。
(2)如果实现接口的子类是实体类,则它必须实现该接口的所有抽象方法。
(3)如果事先接口的子类方法是抽象类,则它不实现该接口的所有的抽象方法。
(4)接口的抽象方法的默认访问权限控制符public,子类在覆写接口的抽象方法时,必须显式的使用public,因为子类覆写父类方法时,子类方法访问控制权限不能小于父类的访问控制权限。