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的两个方法都实现了

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

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

相关文章

思倍云荣膺2023年度“毕马威中国领先不动产科技企业50”

12月15日,毕马威在上海举办以“聚合力 筑未来”为主题的2023年度“毕马威中国领先不动产科技50”的报告发布会。思倍云荣登2023“毕马威中国领先不动产科技企业50”榜单。 随着AI和大数据的发力、区块链技术的发展和“元宇宙”概念的兴起,数字化正引领着…

ik分词器动态从数据库中加载数据无需重启

ik分词器加载mysql数据库中的热词库 1、下载elasticsearch-analysis-ik 源码包 下载elasticsearch-analysis-ik打开项目(https://github.com/medcl/elasticsearch-analysis-ik) 2、修改插件代码 (1)修改pom.xml中对应版本号 (2)org.wltea.analyzer.dic.Dictionary 单…

Python使用HTTP库发送GET请求的示例——轻松探索网络世界

大家好,今天我要给大家介绍一个非常实用的Python库——HTTP库,它可以帮助我们轻松地发送HTTP请求。今天,我们就来学习一下如何使用HTTP库发送GET请求。 首先,我们需要安装HTTP库。如果你还没有安装,可以通过pip命令进…

开源一个超好用的接口Mock工具——Msw-Tools

作为一名前端开发,是不是总有这样的体验:基础功能逻辑和页面UI开发很快速,本来可以提前完成,但是接口数据联调很费劲,耗时又耗力,有时为了保证进度还不得不加加班。 为了摆脱这种痛苦,经过一周的…

RK3588安装TVM-GPU版本

1.前言 RK3588还有相应的GPU可以使用,我们也可以配置相关的环境,进行GPU的使用 2. RK3588的GPU介绍 Mali-G610 是 Arm 公司开发的第三代 Valhall 架构的 GPU。它于 2022 年 7 月发布,面向中端和高端移动设备。 Mali-G610 采用 Armv9 架构&am…

c jpeg 理论霍夫曼 DC AC表,c程序实现正向逆向转换

此4张表是理论表,不是针对某张图片的特定表。如程序不统计生成某图片的专用霍夫曼表,应该也可用理论表代用。 1.亮度DC表 左边第一列是二进制位数,就是对此位数编码 中间一列是生成比特流的位数,右边是生成的比特流。 2.色度DC…

KSP音频抓包

1. 按照网上其他教程&#xff0c;安装KSP抓音频 Biu~笔记&#xff1a;高通蓝牙ADK&#xff08;38&#xff09;-- KSP in MDE - 大大通(简体站) Biu~笔记&#xff1a;高通蓝牙ADK&#xff08;22&#xff09;--DSP音频链路监听 - 大大通(简体站) <<Biu~笔记&#xff1a;高…

《volatile使用与学习总结:2023-12-17》多层面分析学习java关键字--volatile

一、简介 volatile是java中提供的一种轻量级的同步机制&#xff0c;相比于synchronized更加轻量&#xff0c;因为volatile避免了线程频繁的上下文切换和调度&#xff0c;但是也有缺点&#xff0c;同步性差并且使用起来易出错。 二、并发编程的三个概念 原子性 原子性即一个操…

抖店不出单,看看是不是这几个方面出了问题?

我是电商珠珠 很多人在开了抖店之后&#xff0c;原本预想的销量跟实际的有很大差别&#xff0c;以为每天可以出上百单甚至上千单&#xff0c;实际上一周还出不了五十单。 有人就会疑惑说我明明都按照网上的说法做了&#xff0c;怎么结果还是这样&#xff1f;我做店已经有三年…

直播预约丨《实时湖仓实践五讲》第五讲:实时湖仓领域的最佳实践解析

如今&#xff0c;大规模、高时效、智能化数据处理已是“刚需”&#xff0c;企业需要更强大的数据平台&#xff0c;来应对数据查询、数据处理、数据挖掘、数据展示以及多种计算模型并行的挑战&#xff0c;湖仓一体方案应运而生。 《实时湖仓实践五讲》是袋鼠云打造的系列直播活…

域架构下的功能安全思考

来源&#xff1a;联合电子 随着整车电子电气架构的发展&#xff0c;功能域控架构向整车集中式区域控制演进。新的区域控制架构下&#xff0c;车身控制模块(BCM)&#xff0c;整车控制单元&#xff08;VCU&#xff09;&#xff0c;热管理系统&#xff08;TMS&#xff09;和动力底…

docker 限制ip访问端口

需求限制外网访问 docker的某个服务 经过查找 发现 ubuntu的 ufw 防火墙是无效的 技术交流http://idea.coderyj.com/ 1.查看docker的 路由 iptables --line -nvL DOCKER-USER默认是允许所有的访问不限制 2.添加限制规则 iptables 是从上往下匹配的所以我们限制规则要在第一条 …