接口内容演变过程:
Java 7 接口包含:常量、抽象方法
Java 8 接口新增:默认方法、静态方法
Java 9 接口新增:私有方法
1.常量
格式:
[public] [static] [final] 数据类型 常量名 = 数值;
注意:
(1)常量名全为大写,用下划线连接
(2)定义常量是必须赋值,并且一旦赋值就不能改变
2.抽象方法
格式:
[public] [abstruct] 返回值类型 方法名称(参数列表);
注意:
(1)实现类必须覆盖重写接口中所有的抽象方法,除非实现类是抽象类
3.默认方法
格式:
[public] default 返回值类型 方法名称(参数列表){
方法体;
}
注意:
(1)默认方法也可以被覆盖重写
4.静态方法
格式:
[public] static 返回值类型 方法名称(参数列表){
方法体;
}
注意:
(1)需要通过接口名称进行调用,不能使用实现类的对象进行方法调用
5.私有方法
格式:
—普通私有方法—
private 返回值类型 方法名称(参数列表){
方法体;
}
—静态私有方法—
private static 返回值类型 方法名称(参数列表){
方法体;
}
注意:
(1)私有方法仅供本类调用
使用接口时需要注意的地方:
(1)接口是没有静态代码块或者构造方法的
解释:接口不能使用New的方式来生成对象,所以它不存在构造方法
(2)一个类的直接父类是唯一的,但是一个类可以同时实现多个接口
解释:为什么一个类的直接父类是唯一的?因为如果有多个直接父类,假设两个直接父类中有相同方法,那么在使用super调用时,到底该调用哪一个?因为存在这样的问题,所以在Java中类的直接父类是唯一的。
一个类可以同时实现多个接口,实现接口的前提是必须将接口中的所有抽象方法覆盖重写,并且若多个接口中存在重复的方法也有解决方案,所以一个类实现多个接口是没有问题的。
(3)如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可
解释:你爸爸(接口A)让你吃饭,你妈妈(接口B)也让你吃饭,你只需要乖乖听话覆盖重写谁的都可以,不过只需要覆盖重写一次就好,因为目的达到了
(4)如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类
解释:是呗…
(5)如果实现类所实现的多个接口中存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写
解释:这是解决方法
(6)一个类如果直接父类当中的方法和接口当中的默认方法产生了冲突,优先用父类当中的方法
解释:底层代码
收集到了一篇不错的文章关于抽象类,接口
https://blog.youkuaiyun.com/fanguoddd/article/details/87980422