Jdk1.8之前的接口中通常只声明方法的签名,方法的具体实现在子类中进行。Jdk1.8打破了这样的用法:接口中可以实现具体的方法体,只需要加上关键字static或者default修饰即可。

1)使用static来修饰的称之为静态方法,静态方法通过接口名来调用;
2)使用default来修饰的称之为默认方法,默认方法通过对象实例来调用;

静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这样,子类对于该方法就不需要强制来实现,可以选择使用默认的实现,也可以重写自己的实现。当为接口扩展方法时,只需要提供该方法的默认实现即可。至于对应实现类可以重写也可以使用默认的实现,这样所有的实现类就不会报语法错误:aaa不是抽象的,并且未覆盖bbb中的抽象方法。

使用示例:

IGreeting接口定义了三个方法:一个普通的抽象方法,一个静态方法,一个默认方法

定义接口的实现类,通过idea的提示我们可以看到子类只能实现抽象方法和默认方法,而不能实现静态方法。



运行结果:

总结:

1)接口中的abstract抽象方法通过实例对象来调用;
2)接口中的default方法通过实例对象来调用;
3)接口中的静态方法通过接口名.方法名()的方式来调用;
4)接口是不允许直接使用new的方式来获取实例的,如果new可以使用匿名实现类的方式:new后面跟上一对花括号来实现接口中的抽象方法。(匿名实现类:顾名思义没有名称的实现类,优点是不用再单独声明一个类;缺点是没有名字,不能重复使用,只能使用一次。)

Jdk1.8新特性(一) 接口的default方法相关推荐

  1. 学习笔记之-java8的新特性-函数式接口,lambda表达式,方法引用,Stream API,Optional类

    1.Lambda表达式 用匿名内部类的方法去创建多线程1.new Thread2.参数传递new Runnable3.重写run方法4.在run方法中去设置线程任务5.调用start问题:我们最终目标 ...

  2. java 接口的静态方法_Java8新特性:接口的默认方法与接口的静态方法

    默认方法允许接口方法定义默认实现,子类方法不必须实现此方法而就可以拥有该方法及实现.如下: public interface DefaultFuncInter { int getInt(); defa ...

  3. Java8新特性:接口的默认方法与接口的静态方法

    https://www.cnblogs.com/yanhw/archive/2018/01/01/8169086.html https://blog.csdn.net/kimylrong/articl ...

  4. java 1.7 可变参数,JDK1.7新特性(2):异常和可变长参数处理

    异常 jdk1.7对try--catch--finally的异常处理模式进行了增强,下面我们依次来看增强的方面. 1. 为了防止异常覆盖,给Throwable类增加了addSuppressed方法,可 ...

  5. JDK1.8 新特性(全)

    JDK1.8 新特性 本文主要介绍了JDK1.8版本中的一些新特性,乃作者视频观后笔记,仅供参考. jdk1.8新特性知识点: Lambda表达式 函数式接口 方法引用和构造器调用 Stream AP ...

  6. [译]C#8.0中一个使接口更加灵活的新特性-默认接口实现

    9月份的时候,微软宣布正式发布C#8.0,作为.NET Core 3.0发行版的一部分.C#8.0的新特性之一就是默认接口实现.在本文中,我们将一起来聊聊默认接口实现. 众所周知,对现有应用程序的接口 ...

  7. jdk1.8新特性的应用-Stream 的终止操作

    jdk1.8新特性的应用-Stream 的终止操作 public class TestStreamApi4 {List<Employee> emps = Arrays.asList(new ...

  8. jdk1.8新特性_Lambda表达式的引入

    jdk1.8新特性_Lambda表达式的引入 引入 需求: 获取工资大于20000的员工信息 public class Employee {private String name;private in ...

  9. JDK8中的新特性——函数式接口

    JDK8 简介 概述 Java 8由Oracle从2014年3月18日发布,此版本是自Java 5(发布于2004年)之后的一个重量级版本,也是java发展史上的一个里程碑式的版本.这个版本在JVM. ...

最新文章

  1. 图解分析 Linux 网络包发送过程
  2. 游泳后精疲力尽_精疲力尽的编程后如何重回正轨
  3. CV之Haar特征描述算子-人脸检测
  4. SSL之父称SSL不会因被攻击而失去生命力
  5. 循环神经网络 递归神经网络_递归神经网络-第5部分
  6. 火山PC大漠插件源码开源学习--木塔老师
  7. 拒绝百万年薪的郭盛华,如今自立门户,再创辉煌!
  8. 网络安全之主动攻击和被动攻击
  9. vue3.0 组件传值
  10. 刨根问底 Kafka,面试过程真好使
  11. char和nchar,varchar和nvarchar 之间的区别
  12. 如何享受人生,享受工作-读书笔记-得你所想、享你所得
  13. jwt无状态权限认证(pings-shiro-jwt)
  14. 法规标准-GB/T 39265标准解读(2020版)
  15. iio子系统框架分析
  16. 多线程 c语言,如何用C语言实现多线程
  17. RT-Thread_rt_kprintf()打印浮点数(解决方法1:rt_vsnprintf替换为vsnprinitf)
  18. putty 的下载,免费分享
  19. 关于HANA的schame
  20. FIDDLER抓包出现tunnel to

热门文章

  1. ORACLE 使用函数返回表数据
  2. Unable to execute dex: Multiple dex files define Lcom
  3. Linux 解压命令
  4. bilateral filter双边滤波器的通俗理解
  5. OpenCV调用TensorFlow预训练模型
  6. Matlab形态学图像处理:二值图像分割 标记连通区域和重心位置 删除连通区域
  7. 1001: [BeiJing2006]狼抓兔子
  8. MYSQL数据库导入出错:#1046 - No database selected
  9. python基础——递归函数
  10. 华为机试题【9】-整数分割为2的幂次