• 近期将进行后台系统升级,如有访问不畅,请稍后再试!
  • 极客文库-知识库上线!
  • 极客文库小编@勤劳的小蚂蚁,为您推荐每日资讯,欢迎关注!
  • 每日更新优质编程文章!
  • 更多功能模块开发中。。。

JDK8新特性之接口默认方法与静态方法


接口默认方法与静态方法

有这样一些场景,如果一个接口要添加一个方法,那所有的接口实现类都要去实现,而某些实现类根本就不需要实现这个方法也要写一个空实现,所以接口默认方法就是为了解决这个问题。
接口静态方法类似于默认方法,但是我们不能在实现类中覆盖它们,可以避免默认方法在实现类中被覆盖实现。
之前讲过的 JDK8 的 list.foreache 方法,看下源码,其实也是 java.lang.Iterable 接口的默认方法。
  1. defaultvoid forEach(Consumer<?super T> action){
  2.    Objects.requireNonNull(action);
  3.    for(T t :this){
  4.        action.accept(t);
  5.    }
  6. }

简单的例子

默认方法以 default修饰,静态方法用 static
  1. publicstaticvoid main(String[] args){
  2.    IUserInterface userInterface =newUserServiceImpl();
  3.    System.out.println(userInterface.getDefaultUser1());
  4.    System.out.println(IUserInterface.getDefaultUser2());
  5. }
  6. interfaceIUserInterface{
  7.    defaultUser getDefaultUser1(){
  8.        returnnewUser("Susan1",11);
  9.    }
  10.    staticUser getDefaultUser2(){
  11.        returnnewUser("Susan2",22);
  12.    }
  13. }
  14. staticclassUserServiceImplimplementsIUserInterface{
  15. }

注意要点

1、接口默认方法、静态方法可以有多个。
2、默认方法通过实例调用,静态方法通过接口名调用。
3、 default默认方法关键字只能用在接口中。
4、默认方法可以被继承,如果继承了多个接口,多个接口都定义了多个同样的默认方法,实现类需要重写默认方法不然会报错。
5、静态方法不能被继承及覆盖,所以只被具体所在的接口调用。


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:JDK8 新特性之接口默认方法与静态方法
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

欢迎 注册账号 登录 发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00