当前位置: 首页 > 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”取消勾选...

成本对比实测:OpenClaw本地部署Qwen3.5-9B比API节省40%

成本对比实测:OpenClaw本地部署Qwen3.5-9B比API节省40% 1. 为什么我要做这个测试 上个月我给自己定了个目标:用OpenClaw实现个人知识库的自动化更新。这个任务需要每天抓取20篇行业文章,提取关键信息,整理成结构化笔记。最初我直…...

浪潮服务器硬盘红灯报警?手把手教你更换RAID阵列故障盘(附同步失败解决方案)

浪潮服务器硬盘红灯报警全流程处置指南:从故障诊断到阵列重建 当浪潮服务器的硬盘指示灯突然亮起刺眼的红色,大多数运维人员的第一反应往往是心头一紧。这种视觉警报不仅意味着硬件故障,更可能预示着数据丢失的风险。不同于普通PC的硬盘故障…...

从零部署JetLinks社区版:一站式物联网平台本地化搭建实战

1. JetLinks社区版:物联网开发的瑞士军刀 第一次接触JetLinks社区版是在三年前的一个智能家居项目上。当时客户要求两周内搭建一个能管理5000设备的物联网平台,还要支持自定义协议开发。在对比了多个开源方案后,JetLinks的模块化设计让我眼前…...

AI时代程序员创业指南:从超级个体到一人企业

AI时代程序员创业指南:从超级个体到一人企业 AI给了每个人杠杆,但不是每个人都能用好。认知、决策能力,甚至运气,同样重要。 引子:那些"超级个体"的真实故事 最近读到一篇AIX财经的报道,采访了6…...

Qt新手必看:MinGW和MSVC构建套件到底怎么选?保姆级对比指南

Qt构建套件选择指南:MinGW与MSVC深度对比与实战决策 刚接触Qt开发的初学者,往往在配置开发环境的第一步就陷入选择困难——面对MinGW和MSVC这两个构建套件选项,究竟该如何抉择?这个看似简单的选择背后,实则关系到后续开…...

Fillinger:设计自动化时代的效率提升工具

Fillinger:设计自动化时代的效率提升工具 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 核心价值:从机械操作到创意释放的设计革命 核心价值:让…...

c++ 短信验证码 API 示例代码(接口开发专用)

在C服务端、嵌入式设备、桌面应用的开发场景中,短信验证码是用户注册、登录、身份校验的必备安全功能。C开发者常面临网络请求封装繁琐、接口参数不规范、调试无标准方案等痛点。本文提供c短信验证码API示例代码,基于原生C实现标准化接口对接&#xff0c…...

【板栗糖GIS】从KML到KMZ:GIS数据压缩、共享与ArcMap实战指南

1. KMZ与KML:GIS数据压缩与共享的黄金拍档 第一次接触KMZ文件时,我也被这个后缀名搞得一头雾水。直到有次野外测绘,队友发来一个带照片的谷歌地图范围文件,才真正体会到它的便利性。简单来说,KMZ就是KML的压缩版本&…...

SpringCloud Eureka停更了,我为什么还在用它做微服务注册中心?

SpringCloud Eureka停更后,为什么它仍是微服务架构的隐秘王牌? 当Netflix在2018年宣布停止维护Eureka时,整个Java微服务社区都为之震动。五年过去了,这个"过时"的组件却依然活跃在众多企业的生产环境中。上周我参与了一…...

低成本搭建OpenClaw智能体:星图Qwen3-VL:30B镜像+飞书实战

低成本搭建OpenClaw智能体:星图Qwen3-VL:30B镜像飞书实战 1. 为什么选择本地部署OpenClaw 去年夏天,我接手了一个内容运营的兼职项目,需要每天从几十个信息源收集素材、整理成报告。最初尝试用ChatGPT Plus的API自动化处理,但两…...