接口新特性--java进阶day03

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.接口允许定义私有方法

这时有人可能会产生疑问,私有化了,方法也不能通过实现类用对象调了,还有什么意义

如下图,假设接口里的成员方法都有相同的代码,这时我们就将该代码写成一个新的方法,再供其他方法调用,使代码变得更加整洁


.

但是这样还存在安全隐患,log()可以被调用,但我们知道,log()仅是供start()和end()记录的,直接调用没有意义,因此,我们要将log()私有化,由此私有化的意义得来

注意1:接口中私有化不能带default

5.接口允许静态私有化方法

原因:如果start和end都是静态方法,静态访问静态,log不是静态就没意义

posted @ 2025-02-26 15:09  直実  阅读(15)  评论(0)    收藏  举报