当前位置: 首页 > news >正文

面向对象进阶--接口2

JDK8开始接口中新增的方法

接口中可以定义有方法体的方法(默认、静态)。

使用默认方法的作用:解决接口升级的问题。

接口中默认方法的定义格式:

public default返回值类型 方法名(参数列表){}

接口中默认方法的注意事项:

  • 默认方法不是抽象方法,所以不强制被重写。但如果被重写,重写的时候去掉default关键字。

package oop.a06interface;public interface Inter {public abstract void math();
public default void show(){System.out.println("接口中的默认方法---show");
}
}
package oop.a06interface;public class InterImpl implements Inter {@Overridepublic void math() {System.out.println("实现类重写的抽象方法");}
}
package oop.a06interface;public class Test {public static void main(String[] args) {
InterImpl ii=new InterImpl();
ii.show();
ii.math();}
}
  • public可以省略,default不能省略。

  • 如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写。

package oop.a06interface;public interface InterA {public abstract void math();
public default void show(){System.out.println("InterA接口中的默认方法---show");
}
}
package oop.a06interface;public interface InterB {public default void show(){System.out.println("InterB接口中的默认方法---show");}
}
package oop.a06interface;public class InterImpl implements InterA ,InterB{@Overridepublic void math() {System.out.println("实现类重写的抽象方法");}@Overridepublic void show() {System.out.println("接口中的默认方法");}
}
package oop.a06interface;public class Test {public static void main(String[] args) {
InterImpl ii=new InterImpl();
ii.show();
ii.math();}
}

接口中静态方法的定义格式:

public static返回值类型 方法名(参数列表){}

接口中静态方法的注意事项:

  • 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用

package oop.a07interface;public interface Inter {public abstract void math();public static void show(){System.out.println("inter接口中的静态方法");}
}
package oop.a07interface;public class InterImpl implements Inter{@Overridepublic void math() {System.out.println("InterImpl重写的抽象方法");}}
package oop.a07interface;public class Test {public static void main(String[] args) {
Inter.show();}
}
    • public可以省略,static不能省略

JDK9中新增方法

接口中私有方法的定义格式:

格式1:Private 返回值类型 方法名(参数列表){}

格式2:private static 返回值类型 方法名(参数列表){}

接口的应用

1.接口代表规则:是行为的抽象。想要让哪个类拥有一个行为,就让这个类实现对应的接口就可以了。

2.当一个方法的参数是接口时,可以传递接口所有实现类的对象,这种方式称之为接口多态。

适配器设计模式

设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

适配器设计模式:解决接口与接口实现类之间的矛盾问题。

package oop.a09interface;public interface Inter {public abstract void meth1();public abstract void meth2();public abstract void meth3();public abstract void meth4();public abstract void meth5();public abstract void meth6();public abstract void meth7();public abstract void meth8();public abstract void meth9();public abstract void meth10();
}
package oop.a09interface;public abstract class InterAdapter implements Inter {@Overridepublic void meth1() {}@Overridepublic void meth2() {}@Overridepublic void meth3() {}@Overridepublic void meth4() {}@Overridepublic void meth5() {}@Overridepublic void meth6() {}@Overridepublic void meth7() {}@Overridepublic void meth8() {}@Overridepublic void meth9() {}@Overridepublic void meth10() {}
}
package oop.a09interface;public class InterImpl extends InterAdapter{
//需要用到哪个方法就重写哪个方法就可以了@Overridepublic void meth5() {System.out.println("只要用第五个方法");}
}

相关文章:

面向对象进阶--接口2

JDK8开始接口中新增的方法 接口中可以定义有方法体的方法(默认、静态)。 使用默认方法的作用:解决接口升级的问题。 接口中默认方法的定义格式: public default返回值类型 方法名(参数列表){} 接口中默…...

提升认知,推荐15个面向开发者的中文播客

前言 对于科技从业者而言,无论是自学成才的程序员,还是行业资深人士,终身学习是很有必要的,尤其是在这样一个技术快速迭代更新的时代。 作为一个摆脱了时间和空间限制的资讯分享平台,播客(Podcast&#x…...

数据分析-Pandas如何整合多张数据表

数据分析-Pandas如何整合多张数据表 数据表,时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。数据分析过程中表格重整,重新调整,重塑数据表是很重要的技巧&#xff0c…...

配置redis挂载

1. 暂停和删除redis 2.创建文件夹 /usr/local/software/redis/6379/conf/ /usr/local/software/redis/6379/data/ 把redis-conf文件上传到conf文件夹中 3.配置网络 docker network create --driver bridge --subnet172.18.12.0/16 --gateway172.18.1.1 wn_docker_net 4.运…...

C++ 实现游戏(例如MC)键位显示

效果: 是不是有那味儿了? 显示AWSD,空格,Shift和左右键的按键情况以及左右键的CPS。 彩虹色轮廓,黑白填充。具有任务栏图标,可以随时关闭字体是Minecraft AE Pixel,如果你没有装(大…...

力扣hot100 合并两个有序链表 递归 双指针

Problem: 21. 合并两个有序链表 文章目录 💖 递归思路 💖 双指针 💖 递归 思路 👨‍🏫 参考地址 n , m n,m n,m 分别为 list1 和 list2 的元素个数 ⏰ 时间复杂度: O ( n m ) O(nm) O(nm) 🌎 空间复杂…...

10个常用python自动化脚本

大家好,Python凭借其简单和通用性,能够为解决每天重复同样的工作提供最佳方案。本文将探索10个Python脚本,这些脚本可以帮助自动化完成任务,提高工作效率。无论是开发者、数据分析师还是仅仅想简化工作流程的普通用户,…...

C++中函数的默认参数(缺省参数)

一、函数默认参数的概念 在函数声明时,预先对函数参数进行赋值,该参数即为函数的默认参数,也叫缺省参数。 如下函数func1包含默认参数,若调用函数func1时没有给函数传入实参,则默认实参为10086 void func1(int a 1…...

在线扒站网PHP源码-在线扒站工具网站源码

源码介绍 这是一款在线的网站模板下载程序,也就是我们常说的扒站工具,利用它我们可以很轻松的将别人的网站模板样式下载下来,这样就可以大大提高我们编写前端的速度了!注:扒取的任何站点不得用于商业、违法用途&#…...

vue+elementUI el-select 中 没有加clearable出现一个或者多个×清除图标问题

1、现象:下方截图多清除图标了 2、在全局common.scss文件中加一个下方的全局样式noClear 3、在多清除图标的组件上层div加noClear样式 4、清除图标去除成功...

【Python从入门到进阶】47、Scrapy Shell的了解与应用

接上篇《46、58同城Scrapy项目案例介绍》 上一篇我们学习了58同城的Scrapy项目案例,并结合实际再次了项目结构以及代码逻辑的用法。本篇我们来学习Scrapy的一个终端命令行工具Scrapy Shell,并了解它是如何帮助我们更好的调试爬虫程序的。 一、Scrapy Sh…...

【ARM 嵌入式 编译系列 2.2 -- GCC 编译参数学习 assembler-with-cpp 使用介绍】

请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 文章目录 GCC 编译选项 assembler-with-cpp GCC 编译选项 assembler-with-cpp 在 rt-thread 的编译脚本中经常会看到下面编译参数: AFLAGS -c DEVICE -x assembler-with-cpp -Wa,-mimplicit-itthumb a…...

深入理解java对象的内存布局

概述: 在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 在HotSpot虚拟机里,…...

MetaGPT中提到的SOP

MetaGPT框架中的提及的SOP概念指的是什么,有什么优点和缺点,为什么要使用SOP? 在MetaGPT框架中,SOP(Set of Procedures)指的是一套标准化的流程和步骤,用于指导模型完成特定任务。SOP可以帮助模型更好地理…...

第15届蓝桥杯嵌入式省赛准备第三天总结笔记(使用STM32cubeMX创建hal库工程+串口接收发送)

因为我是自己搞得板子,原本的下程序和串口1有问题,所以我用的是串口2,用的PA2和PA3 一,使用CubeMX配置串口 选择A开头的这个是异步通信。 配置串口参数,往届的题基本用的9600波特率,所以我这里设置为9600…...

centos安装redis,但是启动redis-server /home/redis/conf/redis7000.conf卡住,怎么解决

如果你在启动 Redis 服务器时发现过程卡住,这可能是由于几种不同的原因。下面是一些可能导致这种情况的原因以及相应的解决方法: 1. 后台启动 Redis 默认在前台运行。如果你在命令行启动 Redis 并且没有指定它在后台运行,它将在前台运行&am…...

开发实践6_project

要求: ① 页面写入超链接,获取所有数据item,显示在另一个页面,1min内,即使数据有变化,页面内容不变,1min后点击超链接可获取最新信息; ② 使用middleware完成用户请求路径判断 &am…...

HCIP----MGRE实验

实验要求: 第一步,基本的IP地址配置 R1: [R1]int g0/0/1 [R1-GigabitEthernet0/0/1]ip add 192.168.1.1 24 #配置PC的网关 [R1]int Serial 4/0/0 [R1-Serial4/0/0]link-protocol hdlc #R1和R2之间采用hdlc封装 [R1-S…...

STM32标准库开发——PWM驱动代码

PWM驱动初始化代码 使能定时器二时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);设置定时器时钟源 TIM_InternalClockConfig(TIM2);配置定时器二的时基单元 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_TimeBaseInitStruct.TIM_ClockDivisionTIM_CKD_D…...

postman导入https证书

进入setting配置中Certificates配置项 点击“Add Certificate”,然后配置相关信息 以上配置完毕,如果测试出现“SSL Error:Self signed certificate” 则将“SSL certificate verification”取消勾选...

告别盲调:用eBPF uprobe给Go/Python应用函数调用画张“热力图”(附libbpfgo实战代码)

深度剖析eBPF uprobe技术:为Go/Python应用构建动态函数热力图 在云原生与微服务架构盛行的今天,后端服务的性能调优一直是开发者面临的挑战。传统性能分析工具往往需要重启服务或修改代码,这在生产环境中几乎不可行。而eBPF技术的出现&#x…...

OpenClaw定时任务管理:Qwen3.5-4B-Claude模型驱动智能提醒系统

OpenClaw定时任务管理:Qwen3.5-4B-Claude模型驱动智能提醒系统 1. 为什么需要AI驱动的定时任务系统 上个月我连续错过了三个重要会议,直到同事发消息询问"人到哪了"才猛然惊醒。这种尴尬促使我开始寻找解决方案——传统日历提醒太被动&#…...

ArcGIS Desktop许可证被占满?别慌,这3个方法帮你快速释放Advanced许可(附详细步骤)

ArcGIS Desktop高级许可被占用?3种高效解决方案与实战技巧 当你正在赶制项目报告或处理关键地理数据时,突然弹出的"All ArcGIS for Desktop Advanced licenses are in use"错误提示足以让任何GIS专业人士心跳加速。这种情况往往发生在团队共享…...

AI 开发实战:需求变更后,如何让 AI 自动补回归范围

AI 开发实战:需求变更后,如何让 AI 自动补回归范围 一、这个问题为什么值得专门拿出来做? 在 AI 工程落地里,真正拖慢团队的往往不是模型本身,而是流程和协作方式没有跟上。 围绕“需求变更后,如何让 AI 自…...

Qwen3-ASR-1.7B保姆级教程:解决‘识别结果不准确’的5类高频问题

Qwen3-ASR-1.7B保姆级教程:解决‘识别结果不准确’的5类高频问题 1. 引言:为什么你的语音识别总是不准? 你是不是遇到过这样的情况:用语音识别软件录音,结果出来的文字乱七八糟,完全不是你说的内容&#…...

ChatGPT订阅接口开发实战:从零搭建到生产环境部署

ChatGPT订阅接口开发实战:从零搭建到生产环境部署 最近在做一个需要集成智能对话能力的项目,自然而然地想到了ChatGPT的订阅接口。本以为调用个API是分分钟的事,结果一脚踩进了坑里。403鉴权失败、消息顺序错乱、突如其来的配额限制……这些…...

League-Toolkit 英雄联盟工具集完整教程:从新手到高手的效率革命

League-Toolkit 英雄联盟工具集完整教程:从新手到高手的效率革命 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在…...

益达App:5分钟打造你的个性化跨平台媒体中心

益达App:5分钟打造你的个性化跨平台媒体中心 【免费下载链接】yidaRule 益达规则仓库 项目地址: https://gitcode.com/gh_mirrors/yi/yidaRule 在信息爆炸的时代,我们每天都要面对海量的媒体内容——视频、音频、小说、漫画分散在各个平台和网站中…...

League Toolkit:重新定义英雄联盟游戏体验的智能辅助工具

League Toolkit:重新定义英雄联盟游戏体验的智能辅助工具 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 价值定位&am…...

Go语言依赖管理:从GOPATH到Go Modules

Go语言依赖管理:从GOPATH到Go Modules 作为一个写了十几年代码的Go后端老兵,我经历了Go语言依赖管理的从GOPATH到Go Modules的转变,踩了不少坑。今天就来分享一下Go语言依赖管理的实践经验。 一、依赖管理的演进 1. GOPATH时代 在Go 1.11之前…...