接口是一种完全抽象的引用类型,接口的成员只有静态常量和抽象方法两种,没有非抽象方法,也没有其他。相当于一种严格的交流标准
(同超类子类一样,接口及实现类中,方法覆盖时的访问权限不能降低)
接口实现:如果子类实现了接口中的所有抽象方法,则该类可以声明为非抽象类,也可以声明为抽象类;
如果子类部分实现了接口中的抽象方法,则该类只能声明为抽象类,
这一点和抽象类及其实现子类类似。
重要声明:接口支持多重继承,类只支持单重继承;
一个类可以实现多个接口,也有“多重继承”的效果,但还是不一样;
接口实例展示:
接口声明:
接口声明用 interface 关键字;
接口支持多重继承,如下所示
接口成员变量声明:
接口成员变量的默认修饰为 public static final,这三个修饰符都可以省略不写;
接口成员变量必须在声明时进行初始化,如下所示;
接口方法声明:
接口中方法的默认修饰符为 public abstract,且修饰符只能为同时包含这两个,这两个修饰符可以省略不写;
接口的实现类:
通常形式: class 类名 extends 直接超类名 implements 接口名1 , 接口名2 , 接口名3 {}
注意事项:
和类继承类似,如果实现类中实现了所有接口的所有抽象方法,则该实现类可以声明为非抽象类,当然也可以声明为抽象类;
如果实现类中没有实现所有的抽象方法,则该实现类只能声明为抽象类。
和类继承类似,实现接口意味着实现类继承了所有接口中的静态常量和抽象方法。静态常量可以直接访问,也可以通过接口名来访问(以防不同接口中有相同的静态常量名)