jdk8/9的接口的新特性

本文详细介绍了Java接口从JDK8到JDK9的演进,包括新增的默认方法、静态方法以及JDK9引入的私有方法。默认方法允许接口提供实现,而静态方法和私有方法则提供了更灵活的代码组织方式。私有方法作为内部辅助方法,用于减少代码重复。接口的这些新特性解决了接口升级问题,同时也影响了实现类的重写规则。理解并掌握这些特性对于Java开发者来说至关重要。
摘要由CSDN通过智能技术生成

jdk8/9接口中的新特性

JDK1.7之前

> 抽象方法

> 常量

JDK1.8

> 抽象方法

> 常量

> 默认方法

> 静态方法

JDK1.9

 > 抽象方法

 > 常量

> 默认方法

> 静态方法

> 私有方法

(实现类无法对该私有方法重写,并不是对外界来用的,是给自己内部的默认方法和静态方法来使用的,将默认方法,静态方法重复的代码可以抽取到私有方法中,默认方法和静态方法在接口里面调用私有方法。外界用的时候用默认的和静态的方法就可以了)

JDK1.8 之后接口中的默认方法,静态方法,1.9的私有方法都是有方法体的

接口中的常量可以通过 接口名.常量名 调用

接口中的方法

抽象方法 实现类必须重写 实现类对象调用

默认方法 实现类可以重写也可以不重写 实现类对象调用

静态方法(用的少) 实现类不能重写 只能使用接口名调用

私有方法(jdk8不能用,jdk9以后都可以用) 实现类不能重写 只能在本接口中被默认方法或者静态方法调用

一个实现类有实现的多个接口中有相同方法名的抽象方法,只要重写一个即可(因为本来都一样)

不同名的抽象方法就需要都重写了

一个实现类有实现的多个接口中有相同方法名的默认方法,则必须重写默认方法(因为不知道你要用那个,所以自 己必须重写方法)

接口的默认方法可以供实现类调用或者重写。

接口的默认方法的定义格式:

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

方法体

}

通过创建接口实现类对象进行使用默认方法

接口中的 默认方法 在实现类中可以重写也可以不重写,不是强制性重写的
接口中的默认方法满足不了实现类的需求时,我们可以在实现类中,重写默认方法再用实现类对象进行使用,反之用实现类对象直接使用
重写完方法后,default关键字没有了,不能写

默认方法出现的原因

用抽象方法的话,只要是实现了该接口的实现类都要重新,用默认的方法时只是哪个实现类需要,哪个实现类可以直接用默认方法,不满足要求的话实现类还可以进行重写再用,均不影响其他实现类

可以解决接口升级的问题(就是加功能,且不影响其他实现类)

接口的静态方法只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用

接口的静态方法的定义格式:

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

方法体

}

注意:

一个类可以实现多个接口,如果多个接口中有重名的静态方法,如果使用实现类对象调用的方式就区分不开使用的是哪个接口中的静态方法,所以只允许使用接口名.静态方法(参数列表) 使用

jdk8不能用,jdk9以后都可以用

接口的私有方法分类:

私有方法 只有接口中的默认方法可以调用

私有静态方法 接口中的默认方法和静态方法都可以调用。

作用:私有方法只能在本接口中使用,抽取多个默认方法或者静态方法中重复的内容,封装到私有方法中,供默认方法和静态方法去调用。从设计的角度讲,私有的方法是对默认方法和静态方法的辅助。

默认方法 通过实现类对象调用进行使用即可

静态方法 只能使用接口名调用

接口的私有方法的定义格式:

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

方法体

}

接口的私有静态方法的定义格式:

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

方法体

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值