成员变量
接口当中可以定义成员变量 但是必须使用public static final三个关键字修饰
从效果上看 这其实就是接口的常量
格式:
public static final 数据类型 常量名称 =数据值
一旦使用final关键字进行修饰 说明不可变
- 1,接口当中的常量可以省略public static final 不写也照样是这样
- 2,接口当中的常量 必须进行赋值 不能不赋值
- 3,接口中常量的名称使用完全大写的字母 用下换线进行分割(推荐命名规则)
- 4,直接接口名.调用
抽象方法
在任何版本的java中 接口都能定义抽象方法
public abstract 返回值类型(参数列表);
- 注意事项:
- 1,接口当中的抽象方法 修饰符必须是两个固定的关键字:public abstract
- 2,这两个关键字修饰符可以选择性的省略
默认方法
从java8开始 接口里允许定义默认方法
格式:
public default 返回值类型 方法名称(参数列表){
方法体
}
备注:
- 1,接口当中的默认方法可以解决接口升级的问题
- 2,接口中的默认方法可以覆盖重写
静态方法
从java8开始 接口当中允许定义静态方法
格式:
public static 返回值类型 方法名称(参数列表){
方法体
}
提示:
- 1,就是将abstract 或者default换成static即可 带上方法体
- 2,接口名. 直接调用
私有方法
抽取一个共有方法 用来解决两个默认方法之间重复代码的问题
但是这个共有方法不应该让实现类使用 应该是私有方法
从java9开始 接口当中允许定义私有方法
- 1,普通私有方法 解决多个默认方法之间重复代码问题
格式:
private 返回值类型 方法名称(参数列表){
方法体
} - 2,静态私有方法 解决多个静态方法之间重发代码问
格式:
private static 返回值类型 方法名称(参数列表){
}
注意事项
使用接口的时候 需要注意
- 1,接口是没有静态代码块或者构造方法的
- 2,一个类的直接父类是唯一的 但是一个类可以同时实现多个接口
格式:
public class MyInterface implements MyInterfaceA,MyInterfaceB{
//覆盖重写所有抽象方法
} - 3,如果实现类所实现的多个接口当中 存在重复的抽象方法 那么只需要覆盖重写一次即可
- 4,如果实现类没有覆盖重写所有接口当中的所有接口抽象方法 那么实现类就必须是一个抽象类
- 5,如果实现类实现的多个接口当中 存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写
- 6,一个类如果直接父类当中的方法 和接口当中的默认方法产生了冲突 优先用父类当中的方法*/