首页 > 编程语言 >【 Java系列】--基础篇-1、认识接口中的default关键字

【 Java系列】--基础篇-1、认识接口中的default关键字

时间:2024-03-29 21:24:33浏览次数:18  
标签:Java 关键字 default 接口 -- 方法 实现

原创: 朱老师 缘神日记

default 关键字:是在 Java 8 中引入的新概念,也可称为 Virtual extension methods——虚拟扩展方法,它与public、private等都属于修饰符关键字,与其它两个关键字不同之处在于default关键字大部分都用于修饰接口。

default 修饰方法时只能在接口类中使用,在接口中被 default 标记的方法可以直接写方法体,而无需修改所有实现了此接口的类。

Interface概念

Interface(接口)的作用为的是扩展,或者归类。相比Abstract Class(抽象类)只能单个继承,Interface(接口)可以多实现,这是Interface(接口)的优势。

default关键字作用

  • 在Java8里面接口里面有个default关键字,表示在接口里面声明的方法,可以有默认的实现,也可以不实现,这个场景常常在function的源代码里面看到,在实际项目中,往往接口里面定义多个方法,如果被几个类实现的话,后面想要在接口里面新增一个方法,就非常棘手,需要同时修改几个类的代码,这样对于开发者来说往往是不友好的。

  • 使用 default 关键字可以打破这个限制,当定义了一个接口,但是我们接口中的方法用了 default 关键字,我们就可以在这个方法中进行实现了。

代码示例

我在TeacherInterface这个接口中,定义了两个方法,一个是execHello()的普通方法,另外一个是default关键字定义的默认方法,可以清楚地看到,它跟传统的方法不同,可以有自己默认的实现。

然后写一个为TeacherInterfaceImpl的实现类,实现TeacherInterface这个接口,从上面的代码中可以看到,被default修饰的方法可以不被接口的实现类所实现,可以完美的解决了在原有接口总添加新业务不带来影响。

单元测试1:我们知道在Java中,接口允许定义方法,但不提供这些方法的实现。当一个类实现一个接口时,它必须提供接口中所有方法的实现。这是Java的强制性要求。那么在Java8之后我们可以使用default关键字,这里使用接口中的默认实现,实现类不实现。

测试结果:实现类实现了accept这个方法。。。

测试结论:可见,我们没有实现的方法,接口替我们做了默认实现,这就是default的功劳。

单元测试2:我们知道在Java中,接口允许定义方法,但不提供这些方法的实现。当一个类实现一个接口时,它必须提供接口中所有方法的实现。这是Java的强制性要求。那么在Java8之后我们可以使用default关键字,这里不使用接口中的默认实现,实现类实现。

测试结果:实现类实现了accept这个方法。。。

测试结论:我们在实现类中实现accept()这个方法,最后也成功输出实现类中方法的结果,这就是Java的多态性!

标签:Java,关键字,default,接口,--,方法,实现
From: https://www.cnblogs.com/o-O-oO/p/18104631

相关文章

  • 1-WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块-CSDK-VSCode开发环境搭建
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 安装串口(CH340)驱动(已经安装的不需......
  • win11无需工具暂停更新3000天
    关闭更新:在命令提示符输入以下命令后找到"设置->Windows更新"将暂停更新的天数调到最高regadd"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings"/vFlightSettingsMaxPauseDays/treg_dword/d3000/f恢复更新:找到"设置->Windows更新"点击"......
  • 打地鼠
    打地鼠游戏:1.小C最近在研究一个打地鼠的游戏,游戏开始时,所有的地鼠都会出现在游戏的界面中,每个地鼠有两个属性:消失的时间t和分数s(即在第一秒到t秒之间打中地鼠就能获得s的分数,时间为t+1秒时,地鼠消失)。小C点击鼠标打一只地鼠的时间是1秒,打中之后地鼠会消失。给定n只地鼠的消失时间......
  • 计算机专业的选择right?
    1.回顾你过去将近3年的学习经历当初你报考的时候,是真正喜欢计算机这个专业吗?你现在后悔选择了这个专业吗?你认为你现在最喜欢的领域是什么(可以是计算机的也可以是其它领域)?1.不是,主要因为好就业。2.不后悔3.计算机操作系统。总结你现在已经掌握的知识你都具备了那些专业知......
  • driver-class-name: com.mysql.jdbc.Driver爆红解决方式
    目录问题解决方式一:手动添加mysql的jar包问题问题:在springboot项目工程中想要进行数据库配置,在application.yml中添加以下代码:#数据库配置spring:datasource:driver-class-name:com.mysql.cj.jdbc.Driverusername:root#你本地的数据库用户名password......
  • 一文带你搞懂RTK定位
    一文带你搞懂RTK定位附赠自动驾驶学习资料和量产经验:链接说到定位,相信大家一定不会觉得陌生。如今我们所处的信息时代,人人都有手机。每天,我们都会用到与地图和导航有关的APP。这些APP,就是基于定位技术的。说到定位技术呢,大家又肯定会想到GPS、北斗这些名词。是的,这些都属于全......
  • 实时渲染什么意思?实时渲染和离线渲染的本质区别
    一、实时渲染是什么意思?实时渲染是指在计算机程序运行时即时地生成图像和动画的过程,这种渲染技术通常用于网络游戏、虚拟现实和增强现实等需要实时交互的XR应用中。实时渲染需要在每秒内渲染数百万到数十亿个像素,以呈现出平滑的动画和交互性能,它包括了一系列的计算和处理步骤,如几......
  • win11切换桌面快捷键
    上回说到win11新设计的任务栏上图标不够放的问题,另一个方式多任务视图,就是多个桌面,这个功能十年前就在MacOS和Linux上流行了,win平台上10版上带有,只是win10有多行任务栏吗,就没探索这个功能,win11就得转正了,左ctrl+win+左右箭头切换,还有待进步啊,一是不能固定桌面数和单键循环,来回倒腾......
  • 代码随想录算法训练营第6天 | 哈希表
    哈希表理论基础用法:一般哈希表都是用来快速判断一个元素是否出现集合里,哈希法牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找eg:例如要查询一个名字是否在这所学校里,要枚举的话时间复杂度是O(n),但如果使用哈希表的话,只需要O(1)就可......
  • “百度杯”CTF比赛 九月场-Upload
    “百度杯”CTF比赛九月场Upload:类型:web题目描述:想怎么传就怎么传,就是这么任性。tips:flag在flag.php中解题方法:打开靶机,获得题目链接是一个文件上传类型的:看到文件上传,就想到一句话木马,先上传一个一句话木马上去:<?php@eval($_POST["1"]);?>上传成功,我们点击这个上传......