接口

参考:https://www.liaoxuefeng.com/wiki/1252599548343744/1260456790454816
1. 什么是接口
interface是比抽象类还要抽象的纯抽象方法的集合,因为它连字段都不能有。在抽象类中,抽象方法本质上是定义高层类的接口规范,从而保证所有子类都有相同的接口实现,这样,多态就能发挥出威力。更极端一点,如果一个抽象类没有字段,所有方法全部都是抽象方法,就可以把该抽象类改写为接口:interface。因为接口定义的所有方法默认都是public abstract的,所以这两个修饰符不需要写出来(写不写效果都一样)。
2. 抽象类与接口的异同
当一个具体的class去实现一个interface时,需要使用implements关键字。在Java中,一个类只能继承自另一个类,不能从多个类继承。但是,一个类可以实现多个interface。

abstract class interface
继承 只能extends一个class 可以implements多个interface
字段 可以定义实例字段 不能定义实例字段
抽象方法 可以定义抽象方法 可以定义抽象方法
非抽象方法 可以定义非抽象方法 可以定义default方法

3. default方法
default方法是指在interface的方法前添加default关键字。
default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类(因为子类要实现接口中的所有方法)。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。

原文地址:https://www.cnblogs.com/21summer/p/13255428.html