接口是多个类的公共规范,是一种引用数据类型。
java 8以前,接口是全局常量和公共抽象方法(接口的主要作用)的集合;
java 8在接口中又引入两大内容,即默认方法和静态方法;
java 9允许在接口中创建私有方法。
接口的定义:public interface 接口名{…}
接口中可以包含以下内容,[ ] 中的关键字可以省略:
成员变量,即常量
[public] [static] [final] 数据类型 常量名 = 数据值;
接口中常量必须赋值,一旦赋值不可改变,常量名称完全大写,用下划线分隔
抽象方法,接口最重要的内容
[public] [abstract] 返回值类型 方法名(参数);
实现类必须覆盖重写接口所有抽象方法,除非实现类是抽象类
默认方法,java8新特性,或称扩展方法
[public] default 返回值类型 方法名(参数) {方法体}
实现类可以直接调用默认方法,默认方法也可被覆盖重写
静态方法,java8新特性
[public] static 返回值类型 方法名(参数) {方法体}
不能被继承,通过接口名直接调用,不能用实现类对象调用
私有方法,java9新特性
普通私有方法:private 返回值类型 方法名(参数){方法体}
静态私有方法:private static 返回值类型 方法名(参数){方法体}
在接口中创建的私有方法只有接口自己可以调用,实现类不能调用
- 接口中不能有静态代码块或者静态方法
- 一个类的直接父类只有一个(单继承),但是一个类可以实现多个接口(多实现),接口和接口之间是多继承的。多实现格式:public class 实现类名 implements 接口名1,接口名2{(对两个接口抽象类都进行重写)…}
- 一个类的直接父类的方法,和接口中的默认方法发生冲突时,优先使用父类方法
接口使用步骤:
-
接口不能直接使用,必须有一个 “实现类” 来实现该接口
格式:public class 实现类名 implements 接口名{…} -
接口的实现类必须覆盖重写(实现)接口中所有的抽象方法
实现:去掉abstract关键字,补充方法体 -
创建实现类的对象进行使用