java接口的方法怎么修改_Java接口默认方法&接口的静态方法&接口的私有方法

1.Java接口默认方法

从Java8开始,接口允许定义默认方法

格式:

public default 返回值类型 方法名称(参数列表){

// ...

}

备注:接口当中的默认方法,可以解决接口升级的问题

public可以省略不写,但是default必须要有

什么是接口升级的问题?

因为接口的实现类必须实现接口的所有抽象方法,但是,当接口中新添加一个抽象方法,而接口的实现类都已经用于实际的生产活动中,要是把这些实现类再改变,则会其他与这些实现类相关的都受到了牵连。如何保证这些实现类固定不动,但是又要在接口中能新添加抽象方法,这时候,我们就让新添加的方法拥有一种默认的方法体。

f01e7904b829d78ed280bc1207c213d1.png

新添加一个抽象方法后,两个实现类出现报错

30b39c046ff791c6af33f05914c0772e.png

db5e97965873afdcbfad4b65bb6a9e12.png

修改:

默认方法会被实现类继承下去

新加的方法,MyInterfaceDefaultA和MyInterfaceDefaultB都不用改,却可以调用它。

85d793d1384d90351ea059d62bf62c03.png

3470bff8356316f7ad94aa5775f01d63.png

40248221390edde8168216cd58b8763d.png

b1b515718c49c0092752629b0aaf4d37.png

运行结果:

fec758700256bb7a7acbfd8764ffdd57.png

总结:

(1)接口的默认方法,可以通过接口实现类对象,直接调用

(2)接口的默认方法,也可以被接口实现类进行覆盖重写

30dcc3365725572f55a3ddb4b807377d.png

70f69857584eba5f4eda68877548d6e2.png

运行结果:

a42d261740a231c7397465bfb261c63b.png

2.接口的静态方法

从Java8开始,接口中允许定义静态方法

格式:

public static 返回值类型 方法名称(参数列表) {

方法体

}

提示:就是将abstract或者default换成static即可,带上方法体。

注意:

不能通过接口实现类的对象来调用接口当中的静态方法

0b4030cc672d18d02f4c347ad3759c33.png

接口实现类

c0eb577db62bad3e0680b8480039456e.png

8cbe766b607e2a51a712a16e5ee53e07.png

正确用法:

通过接口名称,直接调用其中的静态方法

格式:

接口名称.静态方法名(参数);

c5992ba3a47e2e56b9b0579e4fa0c0c5.png

3.接口的私有方法

背景:

如果有方法体的两个方法之间重复的内容太多了,我们就要抽取出来。我们需要抽取出来一个共有方法,用来解决两个默认方法之间的重复代码的问题。

但是这个共有方法不应该让实现类使用,应该是私有化的。

5e0a7999b267644f0219535d20cb768b.png

修改后:抽取出共有方法

3766e414b4f9982587af74c77021d8bc.png

但是这种修改方式,实现类也能调用这个默认方法methodCommon,我们的目标只想methodCommon()方法只被methodDefault1和methodDefault2调用。

d87e4e0cff186add3ffb11c1d06f5ba8.png

ca99cac77208b9e143671036ff4ff87d.png

解决方案:

从Java9开始,接口中允许定义私有方法

(1)普通私有方法:解决多个默认方法之间重复代码问题

格式:

private 返回值类型 方法名称(参数列表){

方法体

}

(2)静态私有方法:解决多个静态方法之间重复代码问题

格式:

private static 返回值类型 方法名称(参数列表){

方法体

}

修改后:

3d81bae29bf4f2c25ea2461fb3889844.png

1363b7a55033bc6937b3623f83762d5a.png

注意:private的方法只有接口自己才能使用,不能被实现类或别人使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值