Java-接口
接口的定义和使用
- 接口的用关键字interface来定义
- 接口和类之间是实现而非继承 通过implement关键字来表示
- 接口的子类 要么重写接口中的所有抽象方法 要么是抽象类
注意事项
- 接口和类的实现关系 可以单实现 也可以多实现 一个类实现多个接口
- 子类在继承父类的同时也可以实现多个接口
接口中的成员特点
- 成员变量 只能是常量 默认用public static final修饰
- 构造方法 接口没有构造方法
- 成员方法 : JDK7之前 接口中的只能定义抽象方法 交给子类去重写
接口和类之间的关系
- 类与类之间的关系 继承关系 只能单继承 不能多继承 但可以多层继承
- 类和接口之间的关系 实现关系 可以单实现 也可以多实现
- 接口和接口之间的关系 可以单继承 也可以多继承
对于最后一点 需要注意的就是 我们是实现最后一个子接口的时候 就需要把上面所有接口的抽象方法全部实现才行
JDK8以后新增的默认方法
允许在接口中定义默认方法 需要使用关键字default修饰
用于解决接口升级中的问题
接口中默认方法的定义格式
1
public default void fun(){}
注意事项
- 默认方法不是抽象方法 所以不强制重写 如果被重写 重写是去掉default关键字
- public 可以省略 default不能省略
- 如果实现了多个接口 多个接口中存在相同名字的默认方法 子类就必须进行重写
所以默认方法就给实现接口的类提供了选择 之前接口中的抽象类你不实现就报错 现在默认方法你不实现也不会报错
JDK8后新增的静态方法
- 允许在接口中定义静态方法 需要用static修饰
- 接口中静态方法格式 (略)
注意事项
- 静态方法只能通过接口名来实现 不能通过实现类名或者对象名来调用
- public 可以省略 static关键字不可以省略
JDK9以后的接口中的私有方法
定义的格式是
1 | private void show(){} //这种格式是为了接口中的默认方法去调用的 |
说白了就是让接口中也有私有方法 不允许其他人来调用 只允许接口类中自己调用