【java基础】接口(interface)
文章目录
- 基础介绍
- 接口的定义
- 关于接口字段和方法的说明
- 使用接口
- 抽象类和接口
- 接口方法冲突的一些说明
- 方法相同名称和参数,返回值相同
- 方法名称相同,参数不同,返回值相同
- 方法返回值不同,名称参数相同
- 方法完全相同,一个有默认实现
- 接口和类中方法冲突
- 总结
基础介绍
接口用来描述类应该做什么,而不是指定它们具体应该怎么做。
在java中,接口不是类,而是对希望符合这个接口的类的一组需求。java只能继承一个类,但是可以实现多个接口。
接口的定义
接口的定义如下
interface sports {}
接口定义其实就是和类定义相似的。只不过把class换成了interface
我们在interface可以定义方法,就像抽象类那样定义未实现的方法即可。类实现接口时就必须重写方法或者自己成为抽象类
interface Sports {void run();
}
在接口里面可以定义方法的默认实现,使用default关键字,如果类实现接口时没有重写该方法,那么该方法就会使用默认实现
interface Sports {void run();default void jump(){}
}
现在,我们可以暂时将接口看做为没有实例字段的抽象类。
关于接口字段和方法的说明
在接口中,我们不能定义实例字段,但是可以定义静态字段。
interface A {public static final int a = 1;
}
但是上面这样写IDEA会有提示

表示字段冗余,其实,在接口中我们定义的字段只能使用public static final进行修饰
我们在接口中可以定义静态方法
interface A {public static void t() {}
}
对于接口里面的内容,其实我们public修饰符可以不用写,因为接口里面字段和方法的访问修饰符只能是public。
使用接口
我们先定义一个接口,内容如下
interface Sports {void run();
}
我们创建一个类来实现接口
class Cat implements Sports {@Overridepublic void run() {System.out.println("cat--run");}
}
这个其实和继承基本类似的,只是将关键字从extends换成了implements
关于接口,我们不能够使用new来实例化一个接口
Sports sports = new Sports(); // ERROR
但是可以声明接口变量,然后引用实现了这个接口的类对象即可
Sports cat = new Cat(); // OK
对于接口,我们将其看作实现接口类的父类就很好理解了
抽象类和接口
对于一个类,我们只能继承一个类,但是可以实现多个接口。我们就可以将接口看做没有实例字段,并且可以被多继承的抽象类
interface A {}interface B {}class C implements A, B {}
接口方法冲突的一些说明
方法相同名称和参数,返回值相同
我们知道,一个类可以实现多个接口,如果接口有相同的方法名称和参数会怎么样呢?如果有相同的名称和参数,并且返回值相同,那么我们只需要实现一个t方法即可
interface A {void t1();
}interface B {void t1();
}class C implements A, B {@Overridepublic void t1() {}
}
方法名称相同,参数不同,返回值相同
如果方法只有参数不同,那么我们需要实现2个方法,也就是会进行重载
interface A {void t1();
}interface B {void t1(int a);
}class C implements A, B {@Overridepublic void t1() {}@Overridepublic void t1(int a) {}
}
方法返回值不同,名称参数相同
如果方法名称相同,参数相同,而返回值不同,那么就会报错,我们无法同时实现2个名称相同,参数也相同但是返回值不同的方法。
interface A {int t1();
}interface B {void t1();
}
一个类无法同时实现A接口和B接口
方法完全相同,一个有默认实现
如果2个接口一个有默认实现,一个没有默认实现,对于这种情况,我们也必须实现该方法
interface A {default void t1() {}
}interface B {void t1();
}class C implements A, B {@Overridepublic void t1() {A.super.t1();}
}
但是我们可以通过 接口名.super.方法名调用默认实现的方法
接口和类中方法冲突
对于接口和类冲突的,都以类为准,也就是类优先原则,不管接口是否有默认实现都会被超类中的方法覆盖
interface A {default void t1() {System.out.println("interface");}
}interface B {void t1();
}class C {public void t1() {System.out.println("class");}
}class D extends C implements A, B {}
我们使用D来调用t1方法将会输出class
D d = new D();d.t1(); // 输出class
总结
对于接口,我们将其看作可以被多继承的,并且不能有实例字段的抽象类就行了。对于接口和接口发生冲突时,只要返回类型相同我们就可以处理,如果返回类型不同那就不能同时实现有冲突的接口了。如果接口和超类发生冲突,那么就是以类优先原则来进行解决的。
相关文章:
【java基础】接口(interface)
文章目录基础介绍接口的定义关于接口字段和方法的说明使用接口抽象类和接口接口方法冲突的一些说明方法相同名称和参数,返回值相同方法名称相同,参数不同,返回值相同方法返回值不同,名称参数相同方法完全相同,一个有默…...
ChatGPT(GPT3.5) OpenAI官方API正式发布
OpenAI社区今天凌晨4点多发送的邮件,介绍了ChatGPT官方API的发布。官方介绍文档地址为“OpenAI API”和“OpenAI API”。 ChatGPT(GPT3.5)官方API模型名称为“gpt-3.5-turbo”和“gpt-3.5-turbo-0301”。API调用价格比GPT text-davinci-003模型便宜10倍。调用费用为…...
CAD中如何将图形对象转换为三维实体?
有些小伙伴在CAD绘制完图纸后,想要将图纸中的某些图形对象转换成三维实体,但却不知道该如何操作,其实很简单,本节CAD绘图教程就和小编一起来了解一下浩辰CAD软件中将符合条件的对象转换为三维实体的相关操作步骤吧! 将…...
【K8S笔记】Kubernetes 集群架构与组件介绍
K8S 官方文档 https://kubernetes.io/zh/docs/home ##注重关注 概念和任务 板块。 K8S 集群架构 K8S也是运用了分布式集群架构: 管理节点/Master 整个集群的管理,任务协作。工作节点/Node 容器运行、删除。 K8S 组件介绍 管理节点/Master 相关组件 …...
9 怎么登录VNC
1)首先在ssh登录后启动vncserver。登陆后输入下面的指令来创建自己的VNC。 命令vncserver :16 –geometry 1900x1000 其中:16是分配的端口号,1900x1000是分辨率。如果没有响应,建议执行下面操作后再次重复上面操作。 命令…...
MPI ubuntu安装,mpicc,mpicxx,mpif90的区别
介绍 MPI是并行计算的一个支持库,支持对C、C、fortran语言进行并行计算。 安装基础环境 ubuntu进行gcc/g/gfortran的安装: gcc: ubuntu下自带gcc编译器。可以通过gcc -v命令来查看是否安装。 g: sudo apt-get install buil…...
移动端笔记
目录 一、移动端基础 二、视口 三、二倍图/多倍图 四、移动端开发 (一)开发选择 (二)常见布局 (三)移动端技术解决方案 五、移动WEB开发之flex布局 六、移动WEB开发之rem适配布局 #END(…...
操作系统笔记、面试八股(一)—— 进程、线程、协程
文章目录1. 进程、线程、协程1.1 进程1.1.1 进程间的通信方式1.1.2 进程同步方式1.1.3 进程的调度算法1.1.4 优先级反转1.1.5 进程状态1.1.6 PCB进程控制块1.1.7 进程的创建和撤销过程1.1.8 为什么要有进程1.2 线程1.2.1 为什么要有线程1.2.2 线程间的同步方式1.3 协程1.3.1 什…...
Python每日一练(20230302)
目录 1. 字符串统计 2. 合并两个有序链表 3. 下一个排列 附录 Python字典内置方法 增 删 改 查 其它 1. 字符串统计 从键盘输入一个包含有英文字母、数字、空格和其它字符的字符串,并分别实现下面的功能:统计字符串中出现2次的英文字母&#…...
Numpy课后练习
Numpy课后练习 文章目录 Numpy课后练习一、前言二、题目及答案一、前言 答案仅供参考,谢谢大家! 二、题目及答案 导入Numpy包并设置随机数种子为666 import numpy as np np.random.seed(666)创建并输出一个包含12个元素的随机整数数组r1,元素的取值范围在[30,100)之间 r1 …...
动态规划dp中的子序列、子数组问题总结
目录 定义dp数组 初始化dp数组 状态转移方程 最终结果 题目 定义dp数组 这类问题的共性是会提供两个数组,寻找他们共同的子序列、子数组。设第一个数组为s,第二个数组为t。则可以设二维dp数组,其大小为len(s + 1)*len(t + 1) dp[i][j]表示 s 前 i 个长度,...
Zookeeper3.5.7版本——Zookeeper的概述、工作机制、特点、数据结构及应用场景
目录一、Zookeeper的概述二、Zookeeper的工作机制三、Zookeeper的特点四、Zookeeper的数据结构五、Zookeeper的应用场景5.1、统一命名服务5.2、统一配置管理5.3、统一集群管理5.4、服务器动态上下线5.5、软负载均衡一、Zookeeper的概述 Zookeeper 是一个开源的分布式的&#x…...
安卓逆向学习及APK抓包(二)--Google Pixel一代手机的ROOT刷入面具
注意:本文仅作参考勿跟操作,root需谨慎,本次测试用的N手Pixel,因参考本文将真机刷成板砖造成的损失与本人无关 1 Google Pixel介绍 1.1手机 google Pixel 在手机选择上,优先选择谷歌系列手机,Nexus和Pixel系列&…...
线程池的基本认识与使用
线程池的基本认识与使用线程池线程池工作原理:优点:传统的创建线程方式线程池创建线程使用线程池 池化思想:线程池、字符串常量池、数据库连接池可以提高资源的利用率 线程池工作原理: 预先创建多个线程对象 放入线程池种&#…...
小家电品牌私域增长解决方案来了
小家电品牌的私域优势 01、行业线上化发展程度高 相对于大家电动辄上千上万元的价格,小家电的客单价较低。而且与大家电偏刚需属性不同的是,小家电的消费需求侧重场景化,用户希望通过购买小家电来提高自身的生活品质。这就决定了用户的决策…...
什么是让ChatGPT爆火的大语言模型(LLM)
什么是让ChatGPT爆火的大语言模型(LLM) 更多精彩内容: https://www.nvidia.cn/gtc-global/?ncidref-dev-876561 文章目录什么是让ChatGPT爆火的大语言模型(LLM)大型语言模型有什么用?大型语言模型如何工作?大型语言模型的热门应用在哪里可以找到大型语言…...
【监控】Linux部署postgres_exporter及PG配置(非Docker)
目录一、下载及部署二、postgres_exporter配置1. 停止脚本stop.sh2. 启动脚本start.sh3. queries.yaml三、PostgreSQL数据库配置1. 修改postgresql.conf配置文件2. 创建用户、表、扩展等四、参考一、下载及部署 下载地址 选一个amd64下载 上传至服务器,解压 tax…...
基于Java+SpringBoot+Vue+Uniapp(有教程)前后端分离健身预约系统设计与实现
博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《Spring家族及…...
【2023】DevOps、SRE、运维开发面试宝典之Redis相关面试题
文章目录 1、redis主从复制原理2、redis哨兵模式的原理3、reids集群原理4、Redis 哈希表进行的触发时机是什么?5、Redis 的 RDB 和 AOF 机制各自的优缺点是什么?这两种机制是否可以混合使用?6、Redis 经常被称为单线程的系统,你如何理解 Redis 的单线程模型7、redis 的事务…...
十五、MyBatis使用PageHelper
1.limit分页 limit分页原理 mysql的limit后面两个数字: 第一个数字:startIndex(起始下标。下标从0开始。) 第二个数字:pageSize(每页显示的记录条数) 假设已知页码pageNum,还有每页…...
RAG 系统优化全流程:从数据入库到召回排序
RAG(Retrieval-Augmented Generation)系统的检索质量直接决定生成内容的上限。本文从工程落地角度,系统梳理 RAG 检索链路的三个核心阶段——入库、查询与召回。针对每个阶段的关键技术(语义分割、问答模拟、查询改写、语义校验、混合检索、语义重排)给出定义、问题背景、…...
ncmdumpGUI:3分钟解锁网易云音乐NCM加密文件的终极指南
ncmdumpGUI:3分钟解锁网易云音乐NCM加密文件的终极指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&…...
NodeMCU固件烧录终极指南:告别命令行,5分钟搞定ESP8266刷机!
NodeMCU固件烧录终极指南:告别命令行,5分钟搞定ESP8266刷机! 【免费下载链接】nodemcu-pyflasher Self-contained NodeMCU flasher with GUI based on esptool.py and wxPython. 项目地址: https://gitcode.com/gh_mirrors/no/nodemcu-pyfl…...
告别答辩PPT噩梦:百考通AI如何帮你高效搞定毕业答辩
写了大半年的论文,却在最后一步的答辩PPT上栽了跟头?这可能是许多毕业生的真实写照。 01 毕业季的隐形杀手:PPT焦虑症 五月,校园里的玉兰花开得正盛,图书馆的灯光却依然亮到深夜。论文查重通过了,导师点头…...
VMDE终极指南:如何快速检测虚拟机环境的完整教程
VMDE终极指南:如何快速检测虚拟机环境的完整教程 【免费下载链接】VMDE Source from VMDE paper, adapted to 2015 项目地址: https://gitcode.com/gh_mirrors/vm/VMDE VMDE(Virtual Machine Detection Enhanced)是一款强大的开源虚拟…...
美国司机监控基础设施复杂,多州出台隐私保护法律应对,你的隐私还好吗?
追踪美国司机监控现状追踪美国司机的监控基础设施如今已发展得远比多数人想象的复杂。最初简单的车牌记录技术,如今已演变成能识别面部、标记异常出行模式并构建详细活动档案的 AI 系统,且这一切都在被监控者毫不知情的情况下进行。据民权组织称…...
自建团队协作平台TeamClaw:从架构设计到部署运维全指南
1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫teamclaw,仓库地址是teamclawai/teamclaw。乍一看这个名字,可能有点摸不着头脑,但深入了解一下,你会发现它瞄准的是一个非常具体且高频的痛点:团…...
Amphenol ICC RJE1Y33A53162401网线组件解析与替代思路
在工业通信、服务器互联以及智能设备网络连接场景中,RJ45类线束组件一直是不可忽视的重要组成部分。近期不少工程师在项目选型时关注到 Amphenol ICC 推出的 RJE1Y33A53162401 线束组件。本文就围绕这款型号,从产品特点、应用方向、选型思路以及兼容替代…...
终极网盘直链下载助手完整指南:免费解锁八大平台高速下载
终极网盘直链下载助手完整指南:免费解锁八大平台高速下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...
抖音图片怎么去水印?2026实测免费去水印方法全盘点,这几款工具真好用
抖音图片怎么去水印?2026实测免费去水印方法全盘点,这几款工具真好用 刷抖音的时候,你有没有遇到过这种情况:看到一张超好看的图片,点保存,结果发现角落里多了一行「用户名」或者一个抖音 Logo,…...
