Java接口
目录
为什么有接口?
接口的定义和使用
注意
接口的基本使用
接口成员的特点
接口和类之间的关系
为什么有接口?
- 接口就是一种规则 对行为的抽象 接口侧重于行为
接口的定义和使用
- 接口用于关键字interface来定义
- public interface 接口名{ }
- 接口不能实例化
- 接口和类是实现关系,通过implements关键字表示 public class 类名 implements 接口名 { }
- 接口的子类(实现类)要么重写接口中的所有抽象方法 要么是抽象类
注意
- 接口和类的实现关系,可以单实现,也可以多实现。public class 类名 implements 接口名1,接口名2{ }
- 实现类还可以在继承一个类的同时实现多个接口。public class 类名 extends 父类 implements 接口名1,接口名2{ }
接口的基本使用
package interfacedemo1;public abstract class Animal {private String name;private int age;public Animal(){}public Animal(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public abstract void eat();
}
package interfacedemo1;public class Dog extends Animal implements Swim{public Dog() {}public Dog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("狗在吃骨头");}@Overridepublic void swim() {System.out.println("狗在游泳");}
}
package interfacedemo1;public class Frog extends Animal implements Swim {public Frog() {}public Frog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("青蛙在吃虫子");}@Overridepublic void swim() {System.out.println("青蛙在游泳");}
}
package interfacedemo1;public interface Swim {public abstract void swim();
}
package interfacedemo1;public class Test {public static void main(String[] args) {Frog frog = new Frog("小红",12);frog.eat();frog.swim();Rabbit rabbit = new Rabbit();rabbit.eat();}
}
接口成员的特点
- 成员变量 只能是常量 默认修饰符:public static final
- 构造方法 没有
- 成员方法 只能是抽象方法 默认修饰符 public abstruct
- JDK7以前:接口只能定义抽
- JDK8:接口中可以定义有方法体中的方法
- JDK9:接口中可以定义私有方法
接口和类之间的关系
- 类和类之间的关系
继承关系,只能单继承,不能多继承,但是可以多层继承
- 类和接口的关系
实现关系,可以单实现,也可以多实现 还可以继承一个类的同时实现多个接口
- 接口和接口的关系
继承关系,可以单继承,可以多继承
package interfacedemo4;public interface Inter3 extends Inter2,Inter1{public abstract void method3();
}package interfacedemo4;public class InterImpl implements Inter3{@Overridepublic void method3() {}@Overridepublic void method1() {}@Overridepublic void method2() {}
}
相关文章:
Java接口
目录 为什么有接口? 接口的定义和使用 注意 接口的基本使用 接口成员的特点 接口和类之间的关系 为什么有接口? 接口就是一种规则 对行为的抽象 接口侧重于行为 接口的定义和使用 接口用于关键字interface来定义public interface 接口名{ }接口不…...
二叉树OJ题目详解
根据二叉树创建字符串 采用前序遍历的方式,将二叉树转换成一个由括号和数字组成的字符串。 再访问每一个节点时,需要分情况讨论。 如果这个节点的左子树不为空,那么字符串应加上括号和左子树的内容,然后判断右子树是否为空&#x…...
#Vue3篇:响应式工具ref()、toRef()、 toRefs()、reactive()的用法和区别
ref() 定义: ref()接收一个普通的Javascript值作为参数,将其转换为响应式对象(ref对象)。 ref对象有一个.value属性,用于获取和修改之。 参数1: 一个普通的Javascript值作为参数 import { ref } from vue const count ref(0) c…...
docker容器内安装gcc(trunk 最新版本)以及LLVM
1、docker内部只有wget以及git命令 项目需要,得更新docker容器中的gcc和LLVM版本但是由于没有预先安装apt、apt-get以及yum,导致很多安装过程就是鸡生蛋蛋生鸡反应。暂时没有找到合适的解决的方法,如果有大佬知道的话,欢迎留言哈…...
手把手教你如何做数据报表
数据报表是一种数据可视化形式,它将复杂的数据信息通过图形、表格等形式进行展示和解释,让人们更加直观地理解和分析数据。数据报表已成为现代企业决策的必备工具之一。对企业来说,数据报表有很多用处。首先,数据报表可以帮助企业…...
loadrunner的函数lr_paramarr()学习
好久没更新了,还是太懒了,正好最近有用到这个函数,浅浅记录一下 1、首先关联到的参数是个数组,比如用这个函数获取web_reg_save_param(“param”....); 那么保存到的参数是param_1;param_2;param_3;param_4;param_co…...
Hive---数据导出
数据导出 文章目录数据导出Insert 导出将查询的结果导出到本地将查询的结果格式化导出到本地将查询的结果导出到 HDFS 上Hadoop 命令导出到本地Hive Shell 命令导出Export 导出到 HDFS 上sqoop导出Insert 导出 表为student 将查询的结果导出到本地 insert overwrite local d…...
还不会CAD批量打印图纸?学会这招再也不怕
各位工程师,相信大家在工作过程中,经常会遇到需要打印大量图纸文件的时候,那么多的图纸,一张张打印太麻烦,此时便需要用到CAD批量打印功能啦!可是,总有些新手设计师不直达奥CAD批量打印…...
硬件设计从失败案例中找方法
大家好,我是记得诚。 2022年底,受邀去上海参加电子技术大会,并在一个硬件设计的分论坛做一场演讲,题目是《硬件设计从失败案例中找方法》,一般演讲都是比较紧张的,而且是现场,台下坐着的都是同…...
使用python求PLS-DA的方差贡献率
以鸢尾花数据集为例,实现PLS-DA降维,画出降维后数据的散点图并求其方差贡献率。 效果图 完整代码 # 导入所需库 import numpy as np from sklearn.cross_decomposition import PLSRegression from sklearn.datasets import load_iris from sklearn.pre…...
前端面试题--JavaScript篇
一、JavaScript中的数据类型JavaScript中共有八种数据类型:Number、String、Boolean、Object、Null、Undefined、null、Symbol、BigInt 其中Symbol和BigInt是ES6新增的数据类型Symbol代表独一无二且不可改变的数据类型,主要为了解决可能出现的全局变量冲…...
【批处理脚本】-3.5-pause暂停命令详解
"><--点击返回「批处理BAT从入门到精通」总目录--> 共3页精讲(列举了所有pause的用法,图文并茂,通俗易懂) 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中,经常会在其集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,…...
软件测试11
一 Linux命令的基本格式 格式组成:命令主体 -命令选项 命令参数 常见命令形式: (1)命令主体 (2)命令主体 -命令选项 (3)命令主体 参数 (4)命令主体 -命令选项…...
2023 面试题js、es6篇
什么是闭包? 闭包的定义 闭包是指能够访问另一个函数作用域中的变量的一个函数。 在js中,只有函数内部的子函数才能访问局部变量, 所以闭包可以理解成 “定义在一个函数内部的函数”。 应用场景 将内部的函数返到外部去,让外部…...
(六十六)设计索引的时候,我们一般要考虑哪些因素呢?(下)
今天我们最后来讲一下设计索引的时候,我们一般要考虑哪些因素。 另外还讲了字段基数的问题以及前缀索引的问题, 那么今天接着来讲剩下的一些索引设计的原则。 首先假设你设计好了一个索引,非常棒,接着你在SQL里这么写ÿ…...
python程序设计基础 实验四
⭐python实验专栏,欢迎订阅与关注! ★观前提示:本篇内容为python程序设计实验,代码内容经测试没有问题,但是可能会不符合每个人实验的要求,因此以下内容建议仅做思路参考。 一、实验目的 (1&am…...
ASP.NET CORE API 使用Orleans
快速使用Monimal API 快速集成Orleans 微软官网地址如下:https://learn.microsoft.com/zh-cn/dotnet/orleans/quickstarts/build-your-first-orleans-app?sourcerecommendations&tabsvisual-studio当然它的存储grain存储采用的是内存级别存储,我缓存…...
《论文阅读》软化标签(将one-hot编码转变为grayscale标签)
《论文阅读》The Emotion is Not One-hot Encoding: Learning with Grayscale Label for Emotion Recognition in Conversation 前言简介相关知识grayscale label模型方法CategoryWord-EmbeddingSelfSelf-AdjustFuture-Self损失实验结果前言 你是否也对于理解论文存在困惑? …...
keras图片数字识别入门AI机器学习
通过使用mnist(AI界的helloworld)手写数字模型训练集,了解下AI工作的基本流程。 本例子,要基于mnist数据集(该数据集包含了【0-9】的模型训练数据集和测试数据集)来完成一个手写数字识别的小demo。 mnist…...
使用qt编写一个程序,伪造一个ip访问一个网站。
你好,这是Bing。😊 根据网络搜索结果,使用qt编写一个程序,伪造一个ip访问一个网站的方法可能有以下几种: - 使用X-Forwarded-For请求头来伪造客户端的真实ip地址。这种方法需要在发送请求时添加X-Forwarded-For: 伪造…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
