接口默认方法与静态方法

有这样一些场景,如果一个接口要添加一个方法,那所有的接口实现类都要去实现,而某些实现类根本就不需要实现这个方法也要写一个空实现,所以接口默认方法就是为了解决这个问题。

接口静态方法类似于默认方法,但是我们不能在实现类中覆盖它们,可以避免默认方法在实现类中被覆盖实现。

之前讲过的JDK8的list.foreache方法,看下源码,其实也是java.lang.Iterable接口的默认方法。

default void forEach(Consumer<? super T> action) {Objects.requireNonNull(action);for (T t : this) {action.accept(t);}
}

简单的例子

默认方法以 default修饰,静态方法用 static

public static void main(String[] args) {IUserInterface userInterface = new UserServiceImpl();System.out.println(userInterface.getDefaultUser1());System.out.println(IUserInterface.getDefaultUser2());}interface IUserInterface {default User getDefaultUser1() {return new User("Susan1", 11);}static User getDefaultUser2() {return new User("Susan2", 22);}}static class UserServiceImpl implements IUserInterface {}

注意要点

1、接口默认方法、静态方法可以有多个。

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

3、 default默认方法关键字只能用在接口中。

4、默认方法可以被继承,如果继承了多个接口,多个接口都定义了多个同样的默认方法,实现类需要重写默认方法不然会报错。

5、静态方法不能被继承及覆盖,所以只被具体所在的接口调用。

JDK8新特性之接口默认方法与静态方法相关推荐

  1. jdk8新特性(接口新特性、lambda表达式、方法引用、函数式接口、Stream流)和单例设计模式

    1.单例设计模式 1.概念: 设计模式:使用固有的流程或方式设计出来的类接口.枚举等元素 2.设计原则: 1.私有化构造方法[private.protected] 2.类中创建最终对象[唯一不能被赋值 ...

  2. 紧随时代的步伐--Java8特性之接口默认方法

    1.关于Java8 自从1996年Sun公司发布Java以来,Java到目前为止已经走过21个年头,每一次的升级,都是Java语言的革新,对时代发展的适应.2014年Oracle发布Java8,而据可 ...

  3. java新特性-函数式接口-作为方法参数-作为方法的返回值-常用函数式接口-Supplier-Consumer-Predicate-Function

    文章目录 函数式接口 概念 函数式接口作为方法参数 函数式接口作为方法的返回值 常用函数式接口 Supplier接口 常用函数式接口 Consumer 函数式接口之 Predicate接口 常用接口之 ...

  4. jdk8新特性-Lambda表达式,方法引用

    Lambda方法引用的概念 1).什么是"方法引用":当我们使用Lambda实现一些功能时,发现已有的类库中已经有方法实现了这样的功能,这时,我们就可以引用已实现的方法来代替Lam ...

  5. 【JDK8 新特性2】JDK 8 接口默认方法/静态方法

    目录 1.接口默认方法 1.1 接口默认方法的定义格式 1.2 接口默认方法的使用 1.2.1 实现类直接调用接口默认方法 1.2.2 实现类重写接口默认方法 2.接口静态方法 2.1 接口静态方法的 ...

  6. Java8新特性总结 - 1.接口新增默认方法和静态方法

    所有示例代码打包下载 : 点击打开链接 Java8新特性 :  接口新增默认方法和静态方法 Optional类 Lambda表达式 方法引用 Stream API - 函数式操作流元素集合 Date/ ...

  7. 反射、注解、动态代理、JDK8新特性

    反射.注解.动态代理.JDK8新特性 第一章.反射 1.类的加载 源文件--通过javac编译-->字节码文件---通过Java命令(通过ClassLoader)--->JVM运行字节码文 ...

  8. 2022 最新 JDK8 新特性 面试题

    2022 最新 JDK8 新特性 面试题 1.阐述 Java 7 和 Java 8 的区别 2.Java SE 8中最流行和最著名的最新功能是什么? 3.是什么使Java SE 8优于其他? 4.在J ...

  9. idea重写接口没有@override_乐字节|Java8核心实战-接口默认方法

    JAVA8已经发布很久,是自java5(2004年发布)之后Oracle发布的最重要的一个版本.其中包括语言.编译器.库.工具和JVM等诸多方面的新特性,对于国内外互联网公司来说,Java8是以后技术 ...

最新文章

  1. cocos2d-xna for win8源代码轻松移植cocos-xna for wp游戏
  2. 区块链和智能合约的关系
  3. 我眼中真正优秀的CTO
  4. js new Date()不带时分秒时,时间变了 问题解决
  5. python获得用户输入的一个字符串(长度3)_python3 字符串属性(一)
  6. boost::geometry模块实现自定义Linestring示例
  7. Flask初识,第五篇 ,做一个用户登录之后查看学员信息的小例子
  8. Cortex-M3-中断/异常的响应序列
  9. 如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件 .
  10. python join() 函数的用法
  11. 这不是特效也不是魔术!
  12. 用node.js读写文件
  13. Oracle distinct后加as,【大话IT】为何加distinct之后就不走索引了
  14. LeetCode 4 Median of Two Sorted Arrays
  15. 2015-2016-1学期 《信息安全系统设计基础》课程总结
  16. 安卓用targetSdk来兼容各个版本
  17. C语言输出规定长度的整数,不够位数前面补零
  18. windows系统维护工具箱
  19. android 10 长按Power键跳过关机对话框直接关机
  20. matlab 三维立方体,使用matlab函数构建三维立方体的几种方法

热门文章

  1. 用命令行执行ROBOT FRAMEWORK
  2. Nexys3学习手记1:写在前面的话
  3. zabbix企业应用之监控mysql 5.6版本
  4. MySQL 5.6 双机热备
  5. Lucene4.3.1 拼写检查SpellChecker
  6. 【Tree】Prim算法思想与步骤
  7. 成功者网上创业的精华经验
  8. 一网打尽深度学习之卷积神经网络的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
  9. 光伏电池的simulink仿真及一些原理
  10. nodejs中httpserver的安装和使用