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

Java基础:接口

1.接口的概念

 

当不是所有子类, 而是多个子类都包含一个方法时, 为了代码书写规范性, 可以用自定义的接口来统一该方法的书写规范. 所以接口可以看作是一种书写规则.

接口是对行为的抽象

抽象类一般是书写在父类当中, 接口是单独书写的, 不是一种类

2.接口的定义和使用

3.接口中成员的特点

4.接口和类的关系

当一个类实现多个接口, 并且多个接口中有重名的方法时, 只用实现一个接口中的同名方法.(也就是说每个方法只实现一次)

若类implements子接口, 那么就需要重写所有的抽象方法(包括父接口方法)

5.接口和抽象类的综合案例

package cn.ncepu.demo1.a02abstrctdemo2;public abstract class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public abstract void work();/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "Person{name = " + name + ", age = " + age + "}";}
}package cn.ncepu.demo1.a02abstrctdemo2;public class PingPong extends Person implements Speak{public PingPong() {}public PingPong(String name, int age) {super(name, age);}@Overridepublic void work() {System.out.println("学打乒乓球");}@Overridepublic void speak() {System.out.println("说英语");}
}package cn.ncepu.demo1.a02abstrctdemo2;public class Basketball extends Person{public Basketball() {}public Basketball(String name, int age) {super(name, age);}@Overridepublic void work() {System.out.println("学打篮球");}
}package cn.ncepu.demo1.a02abstrctdemo2;public class PingPongCoach extends Person implements Speak{public PingPongCoach() {}public PingPongCoach(String name, int age) {super(name, age);}@Overridepublic void work() {System.out.println("教打乒乓球");}@Overridepublic void speak() {System.out.println("说英语");}
}package cn.ncepu.demo1.a02abstrctdemo2;public class BasketballCoach extends Person{public BasketballCoach() {}public BasketballCoach(String name, int age) {super(name, age);}@Overridepublic void work() {System.out.println("教打篮球");}
}package cn.ncepu.demo1.a02abstrctdemo2;public interface Speak {public abstract void speak();
}package cn.ncepu.demo1.a02abstrctdemo2;public class Test {public static void main(String[] args) {PingPong pingPong = new PingPong("乒乓球运动员", 18);Basketball basketball = new Basketball("篮球运动员", 20);PingPongCoach pingPongCoach = new PingPongCoach("乒乓球教练", 35);BasketballCoach basketballCoach = new BasketballCoach("篮球教练", 38);pingPong.work();basketball.work();pingPongCoach.work();basketballCoach.work();pingPongCoach.speak();pingPong.speak();}
}

6.接口中的新增方法

1.有方法体的方法接口

目的 : 为了在父类接口中添加新规则的同时又使已经实现的子类接口不报错

如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写 : 意思是当一个类implements多个接口时, 这几个接口中存在相同名字的默认方法, 这时如果创建类的实例来引用方法就不知道去哪个接口中寻找, 所以必须在类中重写该默认方法.

2. 在接口中定义静态方法

接口中的static方法不能被重写.

通过接口名.方法名(); 来调用static静态方法.

3.在接口中定义私有方法

目的 : 当默认方法和静态方法中有相同功能的代码块时(重复书写的部分), 就通过私有方法用来提取出来写一个方法, 在默认方法和静态方法中直接调用就可以

不加static的私有方法是为默认方法服务的

加static的私有方法是为静态方法服务的

7.接口应用

8.适配器设计模式

当我们不想重写接口中的所有方法, 而只想创建类实现接口中的部分方法时, 我们可以创建一个适配器类用来空重写接口的所用方法, 然后继承适配器类, 重写需要用到的方法就可以了. (一般适配器是abstrct的, 不让外部创建对象)

相关文章:

Java基础:接口

1.接口的概念 当不是所有子类, 而是多个子类都包含一个方法时, 为了代码书写规范性, 可以用自定义的接口来统一该方法的书写规范. 所以接口可以看作是一种书写规则. 接口是对行为的抽象 抽象类一般是书写在父类当中, 接口是单独书写的, 不是一种类 2.接口的定义和使用 3.接口…...

vuex基础入门:uniapp实现用户登录授权实战

1.背景 vuex是数据共享方案之一,本文以微信小程序登录授权为例介绍一下vuex常用属性state、getters、mutations、actions. 2.基于uniapp实现微信小程序登录授权流程 1.凡是需要用户登录授权信息的页面创建时created方法中需要判断用户是否登录,需要使用本地缓存的token调用服务…...

Windows系统从权限维持角度进行应急响应

一、基本介绍 红队攻击者在对目标进行渗透利用后通常都会进行权限维持,以达到持续利用的目的。而作为防守方进行应急响应时,应该如何与技术高超(jiaohuajianzha)的攻击者斗智斗勇呢?或许可以通过本文可以找到答案。以…...

什么是DNS解析?如何提升DNS解析安全?

DNS解析是保障网站正常运行的一项重要服务,DNS解析出现故障,就会导致网站无法被访问或者被劫持到其他的站点,对业务正常开展造成很大影响,因此网站管理人员要高度关注DNS解析的安全,才能确保网站的正常运转&#xff0c…...

电路学习笔记

电源部分 2s锂电池 6.4v-8.4v INA180A2IDBVR 电流检测放大器 OUT ADC1_CH0 to ESP32 可能功能:电源电流监测 稳压/电压监测 OUT ADC1_CH1 to ESP32 降压至2.046v-2.686v并通过电容保持稳定 可能功能:降压模块,电压监测 LDO ASM1117-3.3 低压差线性…...

C# 数据结构

目录 一、介绍 二、数组 三、List(列表) 四、Dictionary(字典) 五、Queue(队列) 六、Stack(栈) 七、Hashtable(哈希表) 结束 一、介绍 数据结构是计…...

powerjob的worker启动,研究完了这块代码之后我发现了,代码就是现实中我们码农的真实写照

这是一篇让你受益匪浅的文章,代码即使人生。 worker启动比server启动要复杂一些,毕竟worker是要实际干活的,工欲善其事必先利其器,所以需要准备的工具还是不能少的,server对于powerjob来说,只是一个调度用的…...

配置Qt Creator

前言 为了使Qt Creator更像您最喜欢的代码编辑器或IDE,您可以更改键盘快捷键、配色方案、通用高亮显示、代码片段和版本控制系统的设置。 检查生成和运行设置 Qt Creator是一个集成开发环境(IDE),可以用来开发Qt应用程序。虽然您可以使用Qt Installer…...

C++-类和对象(下)

C-类和对象(下)一,const成员函数二,再谈构造函数1,初始化列表2,explicit关键字三,static成员四,友元(friend)1,全局函数做友元2,类做友…...

什么是仓库管理?

仓库管理包括仓库日常运营所触及的准绳和流程。从较高的层次上讲,这包括接纳和组织仓库空间、布置劳动力、管理库存和完成订单。放大来看,你会发现有效的仓库管理触及到优化和集成这些过程中的每一个,以确保仓库操作的一切方面协同工作&#…...

对话系统学习概述(仅够参考)

对话系统(仅够参考) 目录对话系统(仅够参考)背景类人对话系统的关键特征1、知识运用2、个性体现3、情感识别与表达数据集评价方式评价的一些指标训练模型需要的资源任务型对话系统预训练最新研究进展参考文献背景 对话系统一般包括…...

免费CRM客户管理系统真的存在吗?不仅有,还有5个!

免费CRM客户管理系统真的存在吗?当然有! 说到CRM客户管理系统,相信很多企业并不陌生,是因为CRM客户管理系统已经成为大多数企业最不可或缺的工具。但是对于很多小微企业和个人用户来说,购买和实施CRM的成本仍然难以承…...

C#开发的OpenRA使用自定义字典的比较函数

C#开发的OpenRA使用自定义字典的比较函数 字典是一个常用的数据结构, 因为它采用键值对的方式来保存数据, 这样非常方便程序里进行数据一对一的映射。 比如通过文件名称查找到文件对象,又者通过socket对象找到缓冲区对象。 由于字典是采用HASH算法,所以它的查找时间是非常快…...

DHCP协议

DHCP协议 文章目录DHCP协议DHCP作用及特点DHCP服务IP分配的三种方式DHCP协议中的报文类型DHCP服务工作流程抓包参考动态主机配置协议 DHCP(Dynamic Host Configuration Protocol),提供了一种 插网即用的技术。DHCP是一个应用层协议。当我们将…...

C语言进阶——自定义类型:枚举、联合

🌇个人主页:_麦麦_ 📚今日名言:如果不去遍历世界,我们就不知道什么是我们精神和情感的寄托,但我们一旦遍历了世界,却发现我们再也无法回到那美好的地方去了。当我们开始寻求,我们就已…...

背景透明(opacity vs background)

最近在做项目的时候,遇到透明度的相关设置。 常用的背景透明设置可分为两种,分别是: 一是给background设置透明度。二是利用opacity属性。 在跳了一些坑之后,本人更推荐给background设置透明度,为什么呢?…...

华为OD机试 - 最小施肥机能效(Python)| 真题+思路+考点+代码+岗位

最小施肥机能效 题目 某农场主管理了一大片果园,fields[i]表示不同果林的面积,单位:( m 2 m^2 m2),现在要为所有的果林施肥且必须在 n 天之内完成,否则影响收成。 小布是果林的工作人员,他每次选择一片果林进行施肥,且一片果林施肥完...

vue2 使用 cesium 篇

vue2 使用 cesium 篇 今天好好写一篇哈,之前写的半死不活的。首先说明:这篇博文是我边做边写的,小白也是,实现效果会同时发布截图,如果没有实现也会说明,仅仅作为技术积累,选择性分享&#xff0…...

2023预测:PKI将受到企业重点关注

2023年,PKI作为关键业务将继续被主流企业关注,根据Keyfactor发布的报告显示,很多企业正努力实施PKI,而以下因素是影响企业决策的主要原因:1、66% 的企业正在其IT环境中部署更多的密钥和证书,而70%的企业表示…...

linux基本功系列之grep命令

文章目录前言一. grep命令介绍二. 语法格式及常用选项三. 参考案例3.1 搜索文件中以root开头的文件3.2 搜索文件中出现的root3.3 搜索除了匹配行之外的行3.4 匹配的部分使用颜色显示3.5 只输出文件中匹配到的地方3.6 输出包含匹配字符串的行,并显示所在的行数3.7 统…...

ResNet18物体识别在内容审核中的应用:快速过滤与分类图片

ResNet18物体识别在内容审核中的应用:快速过滤与分类图片 1. 内容审核的挑战与解决方案 在当今数字内容爆炸式增长的时代,内容审核已成为平台运营的关键环节。每天都有海量的图片需要被快速准确地分类和过滤,传统人工审核方式已无法满足需求…...

enwork

英语口语考试(Oral English Test)作业要求Choose a topic to make an in-depth oral presentation, your topic shall be closely related to your major, your job or any project you have worked on. take a 5-minute video and submit by the 29th of March, 2026.作业提交…...

AI元人文构想:从自感养护到伦理中间件——一种智能时代的人文回应

AI元人文构想:从自感养护到伦理中间件——一种智能时代的人文回应---引言:技术时代的人文焦虑智能算法的深度嵌入,正在重塑人类感知、判断与意义生成的方式。推荐系统预判我们的欲望,社交平台定义我们的关系,大语言模型…...

ChatTTS API 实战:如何构建高可用的 AI 辅助开发工作流

最近在做一个需要大量语音合成的项目,用到了 ChatTTS API。说实话,直接调用 API 虽然简单,但一旦涉及到生产环境的高并发、稳定性和成本控制,问题就接踵而至。经过一番折腾,我总结了一套基于 Python 异步编程的高可用工…...

快速验证openclaw环境:用快马AI一键生成跨平台安装脚本与测试用例

最近在尝试用openclaw框架做数据采集时,发现环境配置这个环节特别容易卡住。不同操作系统下的依赖安装方式差异很大,经常要反复查文档和排错。后来发现用InsCode(快马)平台可以快速生成跨平台的安装方案,分享下具体实践过程。 环境适配的痛点…...

3大核心能力实现高效水印移除:WatermarkRemover-AI全解析

3大核心能力实现高效水印移除:WatermarkRemover-AI全解析 【免费下载链接】WatermarkRemover-AI AI-Powered Watermark Remover using Florence-2 and LaMA Models: A Python application leveraging state-of-the-art deep learning models to effectively remove …...

TWiLight Menu++深度剖析:多平台游戏启动器的技术实现与实践指南

TWiLight Menu深度剖析:多平台游戏启动器的技术实现与实践指南 【免费下载链接】TWiLightMenu DSi Menu replacement for DS/DSi/3DS/2DS 项目地址: https://gitcode.com/gh_mirrors/tw/TWiLightMenu TWiLight Menu作为一款开源的DSi菜单替代品,为…...

MDK分散加载文件(.sct)解析与嵌入式内存管理

MDK分散加载文件(.sct)剖析及应用1. 项目概述1.1 分散加载概念分散加载(Scatter Loading)是一种允许开发者精确控制代码和数据在存储器中布局的技术。通过分散加载文件,我们可以指定程序的特定部分(如代码段、数据段)在存储器的特定地址空间运…...

NE555定时器电路设计:从LED闪烁到电机调速的5个实用项目

NE555定时器电路设计:从LED闪烁到电机调速的5个实用项目 在电子设计的世界里,NE555就像是一把瑞士军刀——小巧、多功能且无处不在。这款诞生于1971年的定时器芯片,至今仍然是电子爱好者和工程师们的最爱。它价格低廉、使用简单,却…...

python-学生选课成绩系统vue

目录系统架构设计前端实现模块后端API设计数据库表结构关键技术点测试与部署扩展性考虑项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统架构设计 采用前后端分离架构: 前端:Vue 3 TypeScript Ele…...