1.抽象方法
在任何版本java中,接口都能定义抽象方法。
- 在接口中定义抽象方法,修饰符必须是public abstract,可以省略。
- 接口不能直接new,需要调用实现类的实现方法。
- 在实现类中必须实现所有抽象方法。如果没有实现所有方法,那么必须是抽象类
2.默认方法
从java8开始,为了解决接口升级问题(如果之后给接口添加方法,实现类必须覆盖重写)。接口可以定义默认方法
- 修饰符是public default,可以有方法体,可以省略public。
- 默认方法会被实现类默认继承,可以被对象调用
- 可以拼接函数模型
3.静态方法
从java8开始,接口中可以允许定义静态方法。如果实现类中有相同的静态方法,则执行不同的方法体。
- 修饰符为public static,可以有方法体,可以省略public
- 静态方法不会被实现类继承,不能被对象调用
- 通过接口名称.静态方法名(参数)
4.私有方法
从java9开始为了解决默认方法之间的重复代码,但不应该被实现类使用,必须是私有化的。
- 修饰符为private。静态私有方法修饰符为private static。
- 多个默认方法重复使用普通私有方法,多个静态方法重复使用静态私有方法。
5.常量
在任何版本中都可以定义常量。
- 修饰符为public static final。关键字可省略。
- 接口中常量必须进行赋值,一旦赋值不可修改。
- 常量名称使用完全大写字符,不同单词之间使用下划线分隔。
6.实现类与接口多实现问题
- 必须实现所有实现接口的抽象方法,如果有重名的,只需要实现一次。
- 必须覆盖重写重名的默认方法。
- 如果直接父类的方法和接口中的默认方法有冲突,则优先使用父类方法。
7.接口之间多继承问题
- 重名抽象方法的算一个方法。
- 父接口的默认方法重名,子接口必须覆盖重写,而且也是默认方法。