interface接口(学习推荐版)

接口组成部分

image-20231203181757382

示例代码:

image-20231203180646821

1.默认会在类型前面添加public staic final修饰变量,所以可省略

image-20231203180912568

2.默认在方法前面添加public abstract修饰,但没有staic和final修饰

image-20231203180951764

注意事项:

1、用staic final的变量就是常量

2、接口只能由成员变量(常量)和成员方法(抽象方法)两部分组成

3、所以接口不能创建对象 即不能通过new 接口名()创建对象,要使用的话用implements实现接口

4.成员变量和方法的权限修饰符只能是public,不能是private,default,protected


常见接口使用情况

1.若接口中的方法重名,实现同名方法相当于把接口的重名方法都实现了

image-20231203182100630

2.方法名相同,参数不同的话,会被当做两个不同的方法

image-20231203182240096

3.仅仅是方法类型不同,会报错,因为不知道执行那个方法

image-20231203182619367

优势与好处

image-20231203184034990

示例代码:

image-20231203184102321

对于代码

Driver s = new A();

s.drive();

左边变量Driver s还可以用接口Singer s替换,当然也可以父类Studnet s替换啦

以后如果不好用,就可以直接换new B(),前提是B实现了Driver,而s.drive就不用修改了,解耦方便

JDK8开始,接口中新增的三种方法

接口新增了这个三种方法,接口的组成部分就多了这三种方法了,也就是说接口组成部分为常量、抽象方法还有这新增的三种方法

image-20231203221019357

该新增的三种方法,该三种方法里面可以写{} ,{}里面写方法体(语句)了

目的就是扩展接口自身的功能,接口自身有方法,其实现类可以去调用。

如果在接口中重新定义一个抽象方法的话,那么接口中的所有实现类都必须实现这个抽象方法,假如接口的实现类有10000个,那这10000的实现类都要去实现这个抽象方法,所以这就是为什么Java要在接口中新增这三个方法的原因了

方法1(方法前面default修饰):既然是default修饰,那访问范围当然是同包下访问咯

image-20231203214537018

image-20231203213901767

不同包下也能访问,说明默认有public修饰

image-20231203215930134

default前面默认有public,也就是说访问范围就是public,而不是default,这个default只是一个标识

方法2(方法前面private修饰):只能在本类中访问

image-20231203214405675

既然是private修饰,自然而言实现类是无法在本类外访问的

方法3(方法前面static修饰):其实也默认加了public,也就是public static修饰

通过接口名.方法名访问

image-20231203215051417

接口的多继承(可以继承多接口)

注意,接口可以多继承,但类不能多继承

接口的多继承其实就是为了简化书写,便于类实现罢了

例如下面代码,类E要实现A,B,C接口直接implements比较麻烦

image-20231203221238882

简化形式,直接写接口D,虽然是简化形式,但类E该必须实现的抽象方法,还是得实现,也就是说必须实现A,B,C,D(包括D)的抽象方法

image-20231203221442584


接口使用的注意事项

事项1.

image-20231203222249979

事项2.

image-20231203222346655

和事项1一个道理,只不过换了中形式而已,其本质一样的

事项3.

image-20231203222653004

结果验证

image-20231203222732057

事项4.

接口新增的default冲突了会报错,但是又可以不冲突

image-20231203223137186

可以看到这里报错了,但是又可以让它不报错,就是class N去实现test()方法

image-20231203222853901

这个不冲突可以理解为calss N去实现了test方法相当于把接口It1和It2的两个方法都实现了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day03

13.约束constraint 13.1 概述 13.1.1 背景 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完…

众和策略:如何稳健投资股票?

怎么稳健出资股票?下降股票亏本概率的办法! 1、长时间坚持 股票商场的动摇是非常大的,特别是短期内呈现的改变,假如不是短线出资者的话,那么建议长时间出资较为稳健,长时间出资能够协助出资者躲避商场动摇…

微信小程序校园跑腿系统怎么做,如何做,要做多久

​ 在这个互联网快速发展、信息爆炸的时代,人人都离不开手机,每个人都忙于各种各样的事情,大学生也一样,有忙于学习,忙于考研,忙着赚学分,忙于参加社团,当然也有忙于打游戏的&#x…

【MySQL】:复合查询

复合查询 一.多表查询二.自连接三.子查询1.单行子查询2.多行子查询3.多列子查询4.在from语句里使用子查询5.合并查询 准备三张表 emp表 dept表 salgrade表 一.多表查询 实际开发中往往数据来自不同的表,所以需要多表查询。我们用一个简单的公司管理系统&#xff0c…

欧非源国际交易平台在2023中非经济贸易大湾区论坛首次亮相

12月16日,2023中非经济贸易大湾区论坛在鹏城隆重召开,欧非源国际交易平台首次亮相。来自非洲部分国家的驻华使节、中非经济贸易委员会领导以及商(协)会、企业家代表共同见证了欧非源国际交易平台的发布,亲历了该平台与…

Pycharm enable IntelliBot #patched后,工程无法打开

#本地环境# Pycharm:2023.12 Pro 对应robot pkg版本: robotframework 6.1 robotframework-databaselibrary 1.2.4 robotframework-pythonlibcore 4.1.2 robotframework-requests 0.9.4 robotframework-seleniumlibrary 6.1.…

内衣洗衣机好用吗?专门洗内衣内裤的热门小型洗衣机

随着人们的生活水平的提升,越来越多小伙伴来开始追求更高的生活水平,一些智能化的小家电就被发明出来,而且内衣洗衣机是其中一个。现在通过内衣裤感染到细菌真的是越来越多,所以我们对内衣裤的清洗频次会高于普通衣服,…

RFID产线物料、人员自动识别管理设计应用方案

生产过程控制的要求是根据在制品信息,动态地确定在制品组装路线和组装方式,使企业管理层能够实时地发现在制品生产和生产线运转状态,系统主要由流水线、RFID 数据采集系统、在制品和工位几个部分组成。 当在制品在流水线上移动时&#xff0c…

采样率8kHz~96kHz单端输入ADC芯片CJC1808

音频模/数转换器是一种用于将模拟音频信号转换成数字信号的设备,可以提供高质量的音频转换功能;被广泛应用于录音室、数字音频处理、混音、模拟音频处理等应用中;是当今数字音频处理中不可或缺的一部分。 ADC芯片可以提供宽频带的模拟输入&a…

数据结构:树(Tree)

树型结构 树的概念 树是一种非线性结构,他是由n(n>0)个有限结点组成的一个具有层次关系的集合。 当n0时,该树为空树。 在任意一个非空树中都满足以下条件: 1、有一个特殊的结点,称为根结点&#xff0c…

【数据分析之Numpy】Numpy中复制函数numpy.repeat()与numpy.tile()的使用方法及区别

一、简介 numpy.repeat()与numpy.tile()都是Numpy库中的复制函数,用于将数组中的元素重复指定的次数。 numpy.repeat()函数接受三个参数:要重复的数组、重复的次数和重复的轴。 numpy.tile()函数接受两个参数:要重复的数组和重复的次数。 二…

千兆电口模块SFP-GE-T有什么用?

千兆电口模块SFP-GE-T是一种用于网络设备的模块,也被称为光转电模块或电口模块。电口模块SFP-GE-T千兆以太网标准,采用了SFP(Small Form-factor Pluggable)封装,通过其RJ-45接口与网络设备连接,电口模块SFP…

2023年度IT168技术卓越奖名单:亚信安慧AntDB数据库

信创卓越贡献奖:湖南亚信安慧科技有限公司 一句话点评:亚信安慧的核心交易数据库AntDB具有应用时间久(15年)、运行节点多(2000)、数据规模大(PB级)、产品稳定可靠(500项目…

nodejs+vue+微信小程序+python+PHP购物商城网站-计算机毕业设计推荐

综合购物商城管理经历和对网上信息归纳整理的结果,在实际应用中,将用户分为两种:管理员和用户两个角色。其中用户可以操作的内容是有限的,管理员可以进行的操作最多。了解系统用户的分类以及可以进行的操作,对于接下来…

【数据结构】(二叉树)计算结点|叶子结点|高度|第K层结点数

目录 概念: 特殊的二叉树 二叉树的性质 二叉树的存储结构 二叉树的创建 二叉树遍历 前序: 中序: 后序: 计算结点数 计算叶子结点数 计算树的高度(深度) 计算第K层结点数 概念: 一颗…

GPT-4V with Emotion:A Zero-shot Benchmark forMultimodal Emotion Understanding

GPT-4V with Emotion:A Zero-shot Benchmark forMultimodal Emotion Understanding GPT-4V情感:多模态情感理解的zero-shot基准 1.摘要 最近,GPT-4视觉系统(GPT-4V)在各种多模态任务中表现出非凡的性能。然而,它在情感识别方面的功效仍然是个问题。本文定…

AWS-WAF-CDN基于速率rate的永久黑名单方案(基于lambda实现)

参考方案(有坑), 所以产生了这篇博客: 点击跳转 1. 部署waf (有则跳过) 必须存在一个rate速率规则,后面的方案堆栈要用 新建rate速率规则 关联cdn资源 2.部署堆栈 (美国东部 (弗吉尼亚北部 …

【QT】QDockWidget控件的使用

目录 1.概述 2.常用函数介绍 3.QDockWidget布局相关 4.QDockWidget的使用注意事项 5.使用场景 6.简单应用示例代码 1.概述 QDockWidget类提供了一个小部件,可以停靠在QMainWindow中,也可以作为桌面上的顶级窗口浮动。 QDockWidget提供了dock Widg…

Github 2023-12-18 开源项目周报 Top14

根据Github Trendings的统计,本周(2023-12-18统计)共有14个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目4Python项目4Jupyter Notebook项目3非开发语言项目1JavaScript项目1Rust项目1Go项目1 基于项目…

下载svn client,小乌龟

给兄弟们提供一个下载svn client的软件连接 不好用包退货 https://sourceforge.net/projects/tortoisesvn/ 点击download即可