在java8中,已经有了接口的新定义。
在工作中,很少看见在接口中写默认方法。主要是今天见到了有程序在写抽象类,就感觉其实这里用新的接口也是可以的。
所以,针对接口,做一个文档梳理。
一:基本知识说明
1.定义
接口可以包括数据成员,但是数据成员必须是常量,其值一旦被初始化后,是不允许修改的,这些数据成员通常为全局变量。
为了避免在接口中添加新方法后要修改所有的实现类,接口中允许定义默认方法(default方法)。
定义接口需要使用关键字interface
2.java中新特性说明
可以在接口中写default修饰的默认方法
package com.jun.prove.service;
public interface calculate {
int result = 7;
default int add(int a, int b){
return a+b;
}
}
如果调用,则使用其实现的子类对象进行调用
3.可以写static方法
这种情况就相当于工具类,使用类名直接调用就可以了
二:一些可能会遇到的场景,关于多继承实现
1.重写
如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写以后的方法
2.类多实现接口
如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么在实现类没有重写此方法的情况下,报错
3.继承与实现混合
如果子类继承的父类和实现的接口中声明了同名同参数的方法,子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法。
4.多接口存在同名方法
当接口的父接口中也有同样的默认方法时,就近原则调用子接口的方法。