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

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批量打印&#xf…...

硬件设计从失败案例中找方法

大家好,我是记得诚。 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命令的基本格式 格式组成&#xff1a;命令主体 -命令选项 命令参数 常见命令形式&#xff1a; &#xff08;1&#xff09;命令主体 &#xff08;2&#xff09;命令主体 -命令选项 &#xff08;3&#xff09;命令主体 参数 &#xff08;4&#xff09;命令主体 -命令选项…...

2023 面试题js、es6篇

什么是闭包&#xff1f; 闭包的定义 闭包是指能够访问另一个函数作用域中的变量的一个函数。 在js中&#xff0c;只有函数内部的子函数才能访问局部变量&#xff0c; 所以闭包可以理解成 “定义在一个函数内部的函数”。 应用场景 将内部的函数返到外部去&#xff0c;让外部…...

(六十六)设计索引的时候,我们一般要考虑哪些因素呢?(下)

今天我们最后来讲一下设计索引的时候&#xff0c;我们一般要考虑哪些因素。 另外还讲了字段基数的问题以及前缀索引的问题&#xff0c; 那么今天接着来讲剩下的一些索引设计的原则。 首先假设你设计好了一个索引&#xff0c;非常棒&#xff0c;接着你在SQL里这么写&#xff…...

python程序设计基础 实验四

⭐python实验专栏&#xff0c;欢迎订阅与关注&#xff01; ★观前提示&#xff1a;本篇内容为python程序设计实验&#xff0c;代码内容经测试没有问题&#xff0c;但是可能会不符合每个人实验的要求&#xff0c;因此以下内容建议仅做思路参考。 一、实验目的 &#xff08;1&am…...

ASP.NET CORE API 使用Orleans

快速使用Monimal API 快速集成Orleans 微软官网地址如下&#xff1a;https://learn.microsoft.com/zh-cn/dotnet/orleans/quickstarts/build-your-first-orleans-app?sourcerecommendations&tabsvisual-studio当然它的存储grain存储采用的是内存级别存储&#xff0c;我缓存…...

《论文阅读》软化标签(将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&#xff08;AI界的helloworld&#xff09;手写数字模型训练集&#xff0c;了解下AI工作的基本流程。 本例子&#xff0c;要基于mnist数据集&#xff08;该数据集包含了【0-9】的模型训练数据集和测试数据集&#xff09;来完成一个手写数字识别的小demo。 mnist…...

使用qt编写一个程序,伪造一个ip访问一个网站。

你好&#xff0c;这是Bing。&#x1f60a; 根据网络搜索结果&#xff0c;使用qt编写一个程序&#xff0c;伪造一个ip访问一个网站的方法可能有以下几种&#xff1a; - 使用X-Forwarded-For请求头来伪造客户端的真实ip地址。这种方法需要在发送请求时添加X-Forwarded-For: 伪造…...

Apex Legends后坐力控制解决方案:技术原理与实践指南

Apex Legends后坐力控制解决方案&#xff1a;技术原理与实践指南 【免费下载链接】Apex-NoRecoil-2021 Scripts to reduce recoil for Apex Legends. (auto weapon detection, support multiple resolutions) 项目地址: https://gitcode.com/gh_mirrors/ap/Apex-NoRecoil-202…...

打破平台壁垒:AI驱动的全渠道内容生产新范式

打破平台壁垒&#xff1a;AI驱动的全渠道内容生产新范式 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-Workflow …...

别再让串口指示灯‘瞎闪’了!手把手教你用LM358运放做个‘聪明’的LED驱动电路

别再让串口指示灯‘瞎闪’了&#xff01;手把手教你用LM358运放做个‘聪明’的LED驱动电路 调试串口通信时&#xff0c;最让人头疼的莫过于那些"瞎闪"的指示灯——波特率一高&#xff0c;LED就像得了癫痫&#xff0c;微弱的光斑根本分不清是发送还是接收。我曾在一个…...

春联生成模型-中文-base行业落地:新能源车企‘碳中和’‘智驾’等科技春联生成

春联生成模型-中文-base行业落地&#xff1a;新能源车企碳中和智驾等科技春联生成 1. 引言&#xff1a;当传统春联遇上现代科技 春节贴春联是千百年来的传统习俗&#xff0c;但传统的"福禄寿喜"已经难以完全表达现代企业的科技内涵。特别是新能源车企&#xff0c;既…...

Qwen3-ASR-1.7B部署教程:基于device_map=‘auto‘的GPU智能分配实践

Qwen3-ASR-1.7B部署教程&#xff1a;基于device_mapauto的GPU智能分配实践 想不想把电脑变成一个能听懂人话的智能助手&#xff1f;无论是会议录音、视频字幕&#xff0c;还是采访记录&#xff0c;都能快速、准确地转成文字&#xff0c;而且完全在本地运行&#xff0c;不用担心…...

纯本地运行!AgentCPM深度研报助手,手把手教你离线生成研究报告

纯本地运行&#xff01;AgentCPM深度研报助手&#xff0c;手把手教你离线生成研究报告 1. 为什么选择本地研报生成工具&#xff1f; 在信息爆炸的时代&#xff0c;专业研究报告的撰写面临三大痛点&#xff1a; 时间压力&#xff1a;从零开始撰写一份深度报告平均需要40-60小…...

C#运动控制库大比拼:HALCON vs Leadshine,哪个更适合你的项目?

C#运动控制库深度评测&#xff1a;HALCON与Leadshine的工业级对决 在工业自动化领域&#xff0c;选择合适的运动控制库往往决定着项目的成败。作为C#开发者&#xff0c;我们常面临一个关键抉择&#xff1a;是选择功能全面的HALCON&#xff0c;还是专注运动控制的Leadshine&…...

单台三相模块化多电平(MMC)小信号建模之旅

单台三相模块化多电平&#xff08;mmc&#xff09;小信号建模 内含功率外环、环流抑制、电流内环、PLL等控制部分完整建模在电力电子领域&#xff0c;三相模块化多电平&#xff08;MMC&#xff09;变换器因其诸多优点而备受关注。今天咱就唠唠单台MMC的小信号建模&#xff0c;这…...

技术深度:Windows任务栏透明化引擎TranslucentTB架构原理与高级配置指南

技术深度&#xff1a;Windows任务栏透明化引擎TranslucentTB架构原理与高级配置指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB Tran…...

突破窗口限制:Windows桌面管理的高级技术方案

突破窗口限制&#xff1a;Windows桌面管理的高级技术方案 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否曾遇到过这样的情况&#xff1a;某个应用程序的窗口尺寸固定&#…...