1. 接口中的默认方法
- 在 JAVA8 中允许接口中存在定义默认的实现方法.
- 用关键字
default
来定义接口的默认实现方法. - 方法可以是对象方法也可以是静态方法.
2. 接口可以定义默认实现方法后的用途
2.1. 实现多重继承
- 可以通过接口在 JAVA 中来实现多重继承.
2.1.1. 多重继承中实现的多个接口中拥有同名默认方法的冲突
一旦一个实体类继承了多个接口, 而这些接口中如果都有同名方法, 就会产生冲突.
解决方法:
- 在这个实体类中重新定义这个冲突方法, 对方法体直接进行重写.
- 或者在实体类中重定义的方法体中, 指定使用目标接口中的同名方法,
格式为:接口名.super.同名方法
, 这样就可以使用指定父接口的同名方法.
2.1.2. 多继承中实现的接口和继承的实体父类拥有同名方法的冲突
有时候多继承不仅需要实现多个接口, 还需要继承实体类作为父类,
一旦实体父类中的方法和接口中的默认实现方法同名, 也会产生冲突.注意: 如果实体父类的方法和接口中的抽象方法同名, 是不会产生冲突的.
解决方案:
不需要处理, 因为运行时是直接使用实体父类的同名方法, 忽略接口的默认方法.
2.2. 接口中写静态方法用以实现工具类
- 可以直接通过接口名来调用静态方法, 用以实现工具类.
- 因为接口中不存在构造方法, 因此不需要再进行定义实体类来实现工具类.
2.2.1. 接口中定义静态方法后可淘汰的设计模式
- 工具类的设计模式
- 适配器的涉及模式