1.接口新特性
在JDk8和JDK9开始,接口可以定义普通方法
这时就会感到很奇怪,明明之前说好接口只是用来制定规则的,为什么现在又可以定义普通方法了呢?
我们以一个公司案例进行讲解,公司1.0上线了接口,之后有新项目,要更新接口,但我们都知道,接口如果写了新的方法,之前所有实现类都要进行重写,动一线牵全身,十分不方便
2.接口的方法定义
.
想要在接口中定义带有逻辑的方法,需要加入关键字default
注意1:
接口中带有逻辑的方法,实现类也可进行重写,要去除default
实现类访问接口的method()使用的是Inter.super 这是因为接口是干爹,前面的Inter是一个标识,让super明白访问的是接口,如果单纯使用super,访问的就是亲爹
实现类默认继承Object,又因为method()是我们自己写的,Object里没有,所以报错
注意2:
当实现类实现了多个接口,接口中又有相同的方法名和不同的逻辑,这时实现类就必须重写接口中的方法
如下图,接口A和Inter都有method(),但各自的方法逻辑不同,此时实现类就必须重写method(),否则系统也不知道该用哪个method(),就会报错
重写了之后,我们可以选择用谁的method()
3.接口允许定义静态方法
.
接口中静态方法编写格式和我们之前学的一样
注意1:
接口中的静态方法,只允许接口名进行调用,不允许实现类用对象调用
.
4.接口允许定义私有方法
这时有人可能会产生疑问,私有化了,方法也不能通过实现类用对象调了,还有什么意义
如下图,假设接口里的成员方法都有相同的代码,这时我们就将该代码写成一个新的方法,再供其他方法调用,使代码变得更加整洁
.