jdk8接口的升级

jdk8接口的升级

1.接口的局限性

接口要求实现类必须实现所有抽象方法,这一点非常苛刻,极大限制了接口的扩展性,比如:A类实现了某接口,日后接口升级,添加了一个新的方法,这个方法可能对于B实现类有用,但是A也必须强制实现,其他所有的实现类也都必须实现

如果该接口在项目大量使用,因后期系统变化需要升级接口,则所有的实现类无论方法有无作用,都需要强制实现,否则编译不通过

• JDK8新增接口中允许存在默认方法和静态方法,默认方法可以按需实现,不做强制,静态方法无法重写不可覆盖

• 这并不是说接口都写默认方法得了,在设计接口时,写任何代码时尽量遵守单一职责原则

• 所以JDK8提出函数式接口概念,即接口中只有一个抽象方法,确定接口职责,不要让接口显得臃肿

• 所有特性都需要合理使用

jdk8之前接口只能存在静态常量和抽象方法

接口的定义语法

JDK8之前接口只允许存在静态常量和抽象方法

interface 接口名{
静态变量;
抽象方法;
}

JDK8之后额外允许存在默认方法和静态方法

interface 接口名{
	静态常量;
    抽象方法;
    默认方法;
    静态方法;
}

默认方法和静态方法的区别

默认方法通过实例调用,静态方法通过接口名调用

• 默认方法可以被继承,实现类可以直接调用接口默认方法,也可以重写接口默认方法

• 静态方法不能被继承,实现类不能重写静态方法,也不可能通过实现类名调用,只能使用接口名调用

总结

接口中的默认方法可以不用实现也不会报错

默认方法也可以调用。如果默认实现不满足我们的需求,同样可以重写

无论在继承还是在实现关系下,静态方法均不可重写,静态是根据类的加载而加载,优先于对象存在,实现类必须创建对象才可使用,静态方法为了方便调用,重写没有意义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值