如何能在丰富接口功能的同时又不对子类代码进行更改呢?
对于接口我们首先想到的是定义抽象方法,然后由实现类对抽象方法进行实现,但是这样我们需要更改所有的实现类,如果这些方法的处理逻辑都是一样的,我们有更简单的处理方法
答案是定义接口中的默认方法,在JDK8版本后,允许在接口中定义非抽象方法,但是需要使用关键字 default 修饰,这些方法就是默认方法
接口中默认方法的定义格式:
- 格式:public default 返回值类型 方法名(参数列表) { }
- 范例:public default void show() { }
接口中默认方法的注意事项:
- 默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字
- public可以省略,default不能省略
- 如果实现了多个接口,多个接口中存在相同的方法声明,子类就必须对该方法进行重写