JDK8新特性(二):JDK8接口增强

2023-11-19

1.接口增强

在JDK8之前,JDK规定接口中只能定义 ①静态常量  ②抽象方法

修饰词 interface 接口名{
    静态常量;
    抽象方法;
}

在JDK8之后,对接口进行了增强。我们可以在接口中定义 ①静态常量   ②抽象方法   ③默认方法    ④静态方法

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

2.为什么要对接口增强

 1.为什么要引入默认方法?

        实例1:我们在接口 A 中定义了个 test1() 抽象方法,现在有类 B、类 C 都实现了接口 A 。但是现在因为要接入新的需求,而这一个抽象方法明显不能够满足新需求。那么则需要在接口 A 中重新顶一个 test2() 抽象方法,此时我们发现类 B 、类 C 都因为没有实现新的抽象方法 test2() 而报错了。。。。。

        实例2:JDK8 在 Map 接口中增加了 forEach 方法。按 JDK8 之前标准,定义 forEach() 方法如下所示:

public interface Map<K,V>{
    ...
    abstract void forEach(BiConsumer<? super K, ? super V> action);
}

我们通过 API 可以查询到 Map 接口的实现类如下所示:

       此时,如果在 Map 接口中增加一个 forEach() 抽象方法,那么所有的这些实现类都需要来实现 forEach()方法,从而保证语法正确不报错,显然这工程量是巨大的,而且代码也会有很大的冗余。

       因此,在 JDK8 时为接口新增了默认方法(default修饰),效果如下:

public interface Map<K,V>{
    ...
    default void forEach(BiConsumer<? super K, ? super V> action){
        ...
    }
}

特性:

    1.新增的默认方法实现类不必重写,可以直接使用;

    2.实现类也可以根据需要重写       ---->这样就方便了接口的扩展。​​​​​​

 2.接口静态方法

     为了方便接口的扩展,JDK8 同时为接口新增了静态方法

特性:

    1.接口中的静态方法,实现类既不能调用,也不能重写;(只属于接口本身)

    2.只能通过接口名. (接口名+ .)的方式调用

3.默认方法、静态方法的定义

//默认方法的定义(使用 default 定义)
修饰符 interface 接口名{
    修饰符 default 返回值类型 方法名(){
        代码部分;
    }
}

//静态方法的定义(使用 static 修饰)
修饰符 interface 接口名{
    修饰符 static 返回值类型 方法名(){
        代码部分;
    }
}

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

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

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

3.静态方法不能被继承,实现类不能重写接口静态方法,只能使用接口名调用。

5.Demo(这很简单,Demo就省了)

    谢谢


附:JDK8新特性(目录)

       本目录为 JDK8新特性 学习目录,包含JDK8 新增全部特性的介绍。

       如需了解,请跳转链接查看:我是跳转链接


博主写作不易,来个关注呗

求关注、求点赞,加个关注不迷路 ヾ(◍°∇°◍)ノ゙

博主不能保证写的所有知识点都正确,但是能保证纯手敲,错误也请指出,望轻喷 Thanks♪(・ω・)ノ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDK8新特性(二):JDK8接口增强 的相关文章

随机推荐

  • 第三周课程总结&实验报告一

    实验报告 1 打印输出所有的 水仙花数 所谓 水仙花数 是指一个3位数 其中各位数字立方和等于该数本身 例如 153是一个 水仙花数 实验代码 public class ShuiXianHua public static void main
  • L3-014 周游世界 (30 分)

    题目 题目链接 题解 DFS 采用的数据结构 vector 索引为起点 值为 终点 起点公司编号 当然你也可以保存终点公司编号 但是代码中的语句就需要改一下了 dfs 传入四个信息 当前节点 遇到的节点数 换乘数 当前节点所在公司的编号 由
  • python 的回调函数

    回调函数就是一个通过函数指针调用的函数 如果你把函数的指针 地址 作为参数传递给另一个函数 当这个指针被用来调用其所指向的函数时 我们就说这是回调函数 有些库函数 library function 却要求应用先传给它一个函数 好在合适的时候
  • 指针(一)

    这里写目录标题 一 什么是指针 二 指针和指针类型 三 野指针 四 指针运算 五 指针和数组 六 二级指针 七 指针数组 一 什么是指针 1 指针是内存中一个最小单元的编号 也就是地址 2 平时我们说的指针 通常指的是指针变量 是用来存放地
  • 大数据手册(Spark)--Spark基本概念

    文章目录 Spark 基本概念 Hadoop 生态 Spark 生态 Spark 基本架构 Spark运行基本流程 弹性分布式数据集 RDD Spark安装配置 Spark基本概念 Spark基础知识 PySpark版 Spark机器学习
  • 用户互动优化:微信营销系统实践

    在当今移动互联网时代 微信已经成为企业进行营销的重要平台之一 而用户互动作为营销的关键环节 对于提升品牌影响力 增强用户忠诚度至关重要 本文将深入探讨如何通过微信营销系统实践 优化用户互动 提升营销效果 建立更紧密的用户关系 1 理解用户互
  • 修改本地host文件加入可用ip使谷歌浏览器翻译插件重新生效

    修改本地host文件加入可用ip使谷歌浏览器翻译插件重新生效 第一步 找到host文件 可以使用这个工具进行对Hosts文件进行一个查找 鼠标放到对应路径上面 点击鼠标右键 选择打开路径就到对应 路径了 也可以复制到这个路径下面去找host
  • .NET6-Asp.Net Core webapi -从零开始的webapi项目

    本项目为本人22年毕设项目 后续会不断更新本篇文章 全部内容都会写在这一篇文章里 喜欢的请持续关注 一 如何创建 Asp Net Core webapi 项目 二 如何使用 EntityFrameWorkCore DbFirst 需要用到的
  • 人工智能 ai基础知识_如何使用人工智能改善基础医疗的成果和效率

    人工智能 ai基础知识 Only 7 percent of a message is based on the words it contains The rest 93 percent comes from the speaker s t
  • 第一个只出现一次的字符(Java)

    题目 在字符串中找出第一个只出现一次的字符 如输入 abaccdeff 则输出 b 第一思路 借助于数组来做 开辟一个长度为26的数组 用来存放字符串中每个字符出现的次数 这样第一次扫描去统计这个字符串中字符出现的次数 第二次去统计第一个出
  • [Leetcode] 3.无重复字符的最长子串

    题目描述 给定一个字符串 找出不含有重复字符的最长子串的长度 示例 给定 abcabcbb 没有重复字符的最长子串是 abc 那么长度就是3 给定 bbbbb 最长的子串就是 b 长度是1 给定 pwwkew 最长子串是 wke 长度是3
  • CUDA复制测试

    这里主要是测试了内存数据读写操作的几种方式 记录了一些测试结果 对于二维数组 10244 1024 4 1 二维线程格 每个线程对应一个元素 2 转换为int2类型 线程宽度减半 3 线程宽度和高度减半 单个线程操作邻近的4个元素 4 线程
  • 使用神经网络对手写体数字图片数据分类(MLP/PCA)

    使用神经网络对手写体数字图片数据分类 MLP PCA 使用sklearn neural network MLPClassifier类实现手写数字图片识别 MLP的常用的几个参数一般为activation 选择激活函数 如relu sigmo
  • 《2023新版JavaWeb开发教程》学习笔记总目录

    本篇文章是本人对于黑马程序员的 2023新版JavaWeb开发教程 的个人向知识点总结归类 用于巩固自身所学知识 以及查阅知识点和相关代码 并尝试养成做笔记的习惯 黑马程序员2023新版JavaWeb开发教程 实现javaweb企业开发全流
  • git status 展示的中文文件乱码

    乱码现象 解决方法 1 打开 项目根目录下的 git config 配置文件 2 在图中位置追加 quotepath false 效果图
  • 权重计算方法三:变异系数法(Coefficient of Variation)

    目录 1 原理简介 2 步骤详解 2 1 原始数据收集 2 2 指标数据正向化 2 3 数据标准化 消除量纲 2 4 计算变异系数 2 5 计算权重及得分 3 案例分析 3 1 获取原始数据 3 2 指标正向化 3 3 数据标准化 3 4
  • 电巢携手武昌工学院工程能力实训顺利开班!

    为深化校企合作 产教融合打造新工科建设 提升学生工程实践能力 电巢工程能力实训班按照不同岗位类别 匹配对应的企业岗位任职能力要求对学生开展分级培养 以产业需求为导向 培养创新型 应用型人才 6月6日下午4时 深圳电巢联合武昌工学院信息工程学
  • IDEA中如何使用debug调试项目 一步一步详细教程

    原文链接 https www linuxidc com Linux 2017 09 146772 htm 在现在的开发中 我们经常采用Debug来追踪代码的运行流程 通常在程序运行过程中出现异常 启用Debug模式可以分析定位异常发生的位置
  • ST-LINK在MDK环境下载hex提示“Internal command error”和“Error:Flash Download failed Cortex-M3”错误的解决办法

    ST LINK V2在MDK环境下 使用SW DP模式下载hex时出现以下错误提示 出现这种错误一般都是ST LINK和目标板SW DP接线时没有将目标板的电源线接到ST LINK插座的TVCC端导致的 解决步骤 1 目标板使用外接电源供电
  • JDK8新特性(二):JDK8接口增强

    1 接口增强 在JDK8之前 JDK规定接口中只能定义 静态常量 抽象方法 修饰词 interface 接口名 静态常量 抽象方法 在JDK8之后 对接口进行了增强 我们可以在接口中定义 静态常量 抽象方法 默认方法 静态方法 修饰词 in