Interface中的方法被default修饰

Interface中的方法被default修饰

在Java 8中,引入了default方法的概念,使得接口可以包含具体的方法实现。被default修饰的方法称为默认方法。这意味着接口不仅可以声明方法,还可以提供方法的默认实现。

默认方法的主要作用包括:

  1. 向后兼容:在不破坏现有实现的情况下,向接口添加新方法。例如,如果在一个已经广泛使用的接口中添加新方法,所有实现该接口的类都需要实现这个新方法。通过使用默认方法,可以为新方法提供一个默认实现,从而避免破坏现有代码。

  2. 代码复用:允许接口提供一些通用的功能实现,减少代码重复。

语法示例

public interface MyInterface {// 抽象方法void abstractMethod();// 默认方法default void defaultMethod() {System.out.println("This is a default method.");}
}public class MyClass implements MyInterface {@Overridepublic void abstractMethod() {System.out.println("This is an abstract method implementation.");}// 可以选择重写默认方法@Overridepublic void defaultMethod() {System.out.println("This is an overridden default method.");}public static void main(String[] args) {MyClass myClass = new MyClass();myClass.abstractMethod(); // 输出: This is an abstract method implementation.myClass.defaultMethod();  // 输出: This is an overridden default method.}
}

在上述示例中,MyInterface接口包含一个抽象方法abstractMethod和一个默认方法defaultMethodMyClass实现了MyInterface,并且重写了默认方法defaultMethod

默认方法可以不被重写吗

默认方法可以不被重写。如果一个类实现了一个包含默认方法的接口,但没有重写该默认方法,那么该类将继承并使用接口中提供的默认实现。

示例

public interface MyInterface {// 抽象方法void abstractMethod();// 默认方法default void defaultMethod() {System.out.println("This is a default method.");}
}public class MyClass implements MyInterface {@Overridepublic void abstractMethod() {System.out.println("This is an abstract method implementation.");}// 没有重写 defaultMethodpublic static void main(String[] args) {MyClass myClass = new MyClass();myClass.abstractMethod(); // 输出: This is an abstract method implementation.myClass.defaultMethod();  // 输出: This is a default method.}
}

在这个示例中,MyClass实现了MyInterface,但没有重写默认方法defaultMethod。因此,当调用myClass.defaultMethod()时,将使用接口中提供的默认实现,输出 “This is a default method.”。

总结

  • 默认方法可以不被重写。如果不重写,类将使用接口中提供的默认实现。
  • 如果需要,可以选择重写默认方法以提供特定的实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业网络通信教学平台-工业互联网综合教学的实验平台-工业互联网应用实训

工业互联网(Industrial Internet),也称为工业物联网或IIoT,是一个开放的、全球化的工业网络,将人、数据和机器进行连接,将工业、技术和互联网深度融合。 工业互联网产业发展离不开信息技术产业人才&#xf…

Elasticsearch 聚合查询简介

Elasticsearch 聚合查询简介 在 Elasticsearch 中,聚合(Aggregations)是一种强大的数据分析工具,可以让你从数据中提取有意义的信息。通过聚合查询,可以对数据进行分类、统计、过滤和分组等操作,从而帮助用…

Android TEE SE

在Android平台上,Trusted Execution Environment (TEE) 和 Secure Element (SE) 是用来增强设备安全性的关键技术。TEE提供了隔离的执行环境,可以执行敏感的安全操作,而SE则是一个独立的、高度安全的微控制器,用于存储和处理非常敏…

Log4j的原理及应用详解(五)

本系列文章简介: 在软件开发的广阔领域中,日志记录是一项至关重要的活动。它不仅帮助开发者追踪程序的执行流程,还在问题排查、性能监控以及用户行为分析等方面发挥着不可替代的作用。随着软件系统的日益复杂,对日志管理的需求也日…

Qt Creator的好用的功能

(1)ctrlf: 在当前文档进行查询操作 (2)f3: 找到后,按f3,查找下一个 (3)shiftf3: 查找上一个 右键菜单: (4)f4:在…

LabVIEW异步和同步通信详细分析及比较

1. 基本原理 异步通信: 原理:异步通信(Asynchronous Communication)是一种数据传输方式,其中数据发送和接收操作在独立的时间进行,不需要在特定时刻对齐。发送方在任何时刻可以发送数据,而接收…

GitHub+Picgo图片上传

Picgo下载,修改安装路径,其他一路下一步! 地址 注册GitHub,注册过程不详细展开,不会的百度一下 地址 新建GitHub仓库存放图片 ——————————————————————————————————————————…

第二十章 Nest 大文件分片上传

在前端的文件上传功能中,只要请求头里定义 content-type 为 multipart/form-data,内容就会以下面形式传递到服务端,接着服务器再按照multipart/form-data的格式去提取数据 获取文件数据但是当文件体积很大时 就会出现一个问题 文件越大 请求的…

08-8.6.2 败者树

👋 Hi, I’m Beast Cheng 👀 I’m interested in photography, hiking, landscape… 🌱 I’m currently learning python, javascript, kotlin… 📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

QT使用QPainter绘制多边形维度图

多边形统计维度图是一种用于展示多个维度的数据的图表。它通过将各个维度表示为图表中的多边形的边,根据数据的大小和比例来确定各个维度的长度。 一、简述 本示例实现六边形战力统计维度图,一种将六个维度的战力统计以六边形图形展示的方法。六个维度是…

六、元组、字典、集合

文章目录 学习目标一、元组的使用二、字典的基本使用2.1 字典使用注意事项2.2 字典的增删改查2.3 update方法的使用2.4 合并多个dict2.5 字典的遍历2.6 字典的推导式三、集合的使用3.1 set的使用3.2 set的操作3.3 集合的高级用法四、eval与json五、可迭代对象通用方法5.1 运算符…

五、python列表

文章目录 学习目标一、列表的基本使用二、列表的遍历2.1 while循环遍历2.2 for...in 循环遍历三、列表的排序3.1 交换两个变量的值3.2 冒泡排序3.3 列表的排序与反转方法四、列表的复制4.1 可变数据类型与不可变数据类型4.2 列表的复制五、列表的嵌套(略)六、列表推导式学习目…

基于形状匹配原始版放出来(给有用的人参考2)

我们仍然讲学习。 昨天已经把80万像素1024*768的图像变成256*192图像了,并且使用iir高斯平滑保留了特征。 下面做的就是用roi把特征图扣出来,也就是所谓的模板,你在原图中的roi假定是200*200,那么在256*192中,就变成…

怎样在 PostgreSQL 中优化对复合索引的选择性?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 怎样在 PostgreSQL 中优化对复合索引的选择性一、理解复合索引的概念二、选择性的重要性三、优化复合索…

ollama编译安装@focal jammy Ubuntu @FreeBSD jail

Ollama是一个用于在本地运行大型语言模型(LLM)的开源框架。它支持多种操作系统,但是唯独不支持FreeBSD,于是尝试在FreeBSD的jail里安装Ubuntu,Ubuntu里再安装ollama。 先上结论,好像focal jail无法编译成功…

shell脚本-linux如何在脚本中远程到一台linux机器并执行命令

需求:我们需要从11.0.1.17远程到11.0.1.16上执行命令 实现: 1.让11.0.1.17 可以免密登录到11.0.1.16 [rootlocalhost ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created d…

【问题记录】Docker配置mongodb副本集实现数据流实时获取

配置mongodb副本集实现数据流实时获取 前言操作步骤1. docker拉取mongodb镜像2. 连接mongo1镜像的mongosh3. 在mongosh中初始化副本集 注意点 前言 由于想用nodejs实现实时获取Mongodb数据流,但是报错显示需要有副本集的mongodb才能实现实时获取信息流,…

扫地机器人如何解决室内空气污染问题

扫地机器人解决室内空气污染问题主要通过以下几个方面来实现: 一、高效清洁减少地面污染源 ① 地面清扫能力:扫地机器人能够自动或手动控制进行地面清扫,有效清除地面上的各种污渍、灰尘和毛发等污染物。这些污染物是室内空气中的重要污染源…

27.js实现鼠标拖拽

e.offsetX是鼠标距离准确事件源的左上角距离 e.clientX是鼠标距离浏览器可视窗口左上角的距离 e.pageX是鼠标距离文档左上角的距离 /* 当鼠标点击div时开始挪动,当鼠标抬起,div静止——事件源是div 当鼠标点击后,鼠标在移动——事件源…

java 前端上传文件后端解析并转发到第三方存储,Hutool 工具

单个文件上传 PostMapping("/upload")public MyResponse<?> upload(MultipartFile file) {if (multipartFiles null || multipartFiles.length 0) {throw new MessageException("未选择文件");}InputStreamResource inputStreamResource new Inp…