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

JavaSE18——接口

接口(interface)

1 概述

在Java中,接口是一种抽象数据类型,它定义了一组方法(没有方法体),但没有实现这些方法的具体代码。接口可以看作是一种合约,它规定了类应该具有的行为。类可以实现一个或多个接口,从而承诺实现接口中定义的方法。

  • 一方面,有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果

  • 另一方面,有时必须从几个类中抽取出一些共同的行为特征,而它们之间又没有is-a的关系,仅仅是具有相同的行为特征而已。例如:鼠标、键盘、打印机、扫描仪、摄像头、充电器、MP3机、手机、数码相机、移动硬盘等都支持USB连接。

  • 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是/要…则必须能…”的思想。**继承是一个"是不是"的关系,而接口实现则是 "能不能"**的关系。

  • 接口的本质是契约,标准,规范,就像我们的法律一样。制定好后大家都要遵守。

接口(interface)是抽象方法和常量值定义的集合。

2 接口的特点:

1. 用interface来定义。

2. 接口中的所有成员变量都默认是由public static final修饰的。

3. 接口中的所有抽象方法都默认是由public abstract修饰的。

4. 接口中没有构造器。

5. 接口采用多继承机制。

3 语法格式

定义Java类的语法格式:先写extends,后写implements

  • class SubClass extends SuperClass implements InterfaceA{ }
interface Drawable {void draw();
}class Circle implements Drawable {public void draw() {System.out.println("Drawing a circle");}
}class Rectangle implements Drawable {public void draw() {System.out.println("Drawing a rectangle");}
}public class Main {public static void main(String[] args) {Drawable circle = new Circle();Drawable rectangle = new Rectangle();circle.draw();  // 输出:Drawing a circlerectangle.draw();  // 输出:Drawing a rectangle}
}

在上面的示例中,我们定义了一个接口Drawable,该接口只有一个抽象方法draw()。然后我们创建了两个实现该接口的类CircleRectangle。在Main类中,我们创建了circlerectangle对象,并调用了它们的draw()方法。

一个类可以实现多个接口,接口也可以继承其它接口。

实现接口的类中必须提供接口中所有方法的具体实现内容,方可实例化。否则,仍为抽象类。

接口的主要用途就是被实现类实现。(面向接口编程

与继承关系类似,接口与实现类之间存在多态性

接口的主要用途是实现代码的解耦和增加扩展性。通过接口,可以定义一组约定好的方法,然后由不同的类去实现这些方法,从而实现多态、降低耦合度,使代码更加灵活和可扩展。

Java中的类可以实现多个接口,也可以继承一个类同时实现接口。接口之间还可以进行继承,通过继承接口可以扩展接口的行为。

需要注意的是,接口中的方法不可以有方法体,常量是隐式静态最终的,接口不能被实例化。在Java 8之后,接口还可以包含默认方法和静态方法的实现。

一个类可以实现多个无关的接口

interface Runner { public void run();}
interface Swimmer {public double swim();}
class Creator{public int eat(){}} 
class Man extends Creator implements Runner ,Swimmer{public void run() {……}public double swim() {……}public int eat() {……}
}

4 接口的优点

接口的优点包括:

  • 实现多继承:Java中一个类只能继承一个类,但可以实现多个接口,从而实现多重继承的效果。
  • 解耦和灵活性:接口将定义和实现分离,可以提高代码的灵活性和可维护性,降低类之间的耦合度。
  • 规范和约束:接口规定了类应该实现的方法,提供了一种强制约束机制。
  • 提供标准化的API:接口定义了一组方法规范,使得不同类的对象可以通过相同的接口进行交互和使用。

相关文章:

JavaSE18——接口

接口(interface) 1 概述 在Java中,接口是一种抽象数据类型,它定义了一组方法(没有方法体),但没有实现这些方法的具体代码。接口可以看作是一种合约,它规定了类应该具有的行为。类可以实现一个或多个接口&…...

杭州亚运会开幕式惊现数字人火炬手,动捕设备迸发动画制作新动能

在第十九届亚运会开幕式上,首次出现了“数字人”点火形式,打造了亚运史上首个数字点火仪式,这种点火方式是一种颠覆性创作的同时,这也是裸眼3D技术、现实增强和AI人工智能技术的完美结合。 此次数字火炬手的背后是采用了动捕设备&…...

ptmalloc源码分析 - malloc/free函数的实战篇(12)

目录 一、chunk的大小实验 二、获取使用中的chunk信息的实验 三、小内存块尝试获取fd信息的实验 四、常用malloc/free函数使用注意事项 看了前面11章节的内容,我们也基本了解了ptmalloc的内存管理逻辑。此处也可以通过一些手段,获取到chunk的信息&am…...

博弈论(奇偶考虑法)+计数+DP(判定转dp):CF838C

首先题目有博弈,先分析一波最优策略(步骤:分析性质)。 两个人,所以显然考虑奇偶考虑法递归考虑。 首先删就是使子问题-1,重新排列是在当前子问题里的。 一个串的排列是有限的,所以这里就可以…...

郁金香2021年游戏辅助技术中级班(一)

郁金香2021年游戏辅助技术中级班(一) 用代码读取utf8名字字节数组搜索UTF-8字符串 用CE和xdbg分析对象名字从LUA函数的角度进行分析复习怪物名字偏移 用CE和xdbg分析对象数组认识虚函数表分析对象数组 分析对象数组链表部分链表的定义链表的数据在内存里…...

加密货币交易所偿付能力的零知识证明

如何检测下一个 FTX 和 Mt. Gox 加密货币交易所 FTX 的内爆导致数十亿客户资金流失,这是加密货币历史上交易所破产的最新例子。历史可以追溯到 2014 年,当时处理 70% 比特币交易的历史最悠久、规模最大的交易所 Mt. Gox 丢失了用户的 850,000 个比特币。…...

软考网络工程师防火墙配置考点总结

(考试重点) 一、访问控制列表 管理网络当中的数据流量,实现数据过滤的重要手段。可以在路由器、三层交换、二层交换和防火墙上实现。 隐藏规则:当前面的规则都匹配不上,华为默认允许,思科默认拒绝。 分…...

【IDEA】idea恢复pom.xml文件显示灰色并带有删除线

通过idea打开spring boot项目后,发现每个服务中的pom.xml文件显示灰色并带有删除线,下面为解决方案 问题截图 解决方案 打开file——settings——build,execution,deployment——Ignored Files,把pom.xml前面的复选框去掉,去掉之…...

Python数据分析之Excel

Openpyxl库 1、Openpyxl模块2、Excel写入2.1、新建2.2、添加数据2.3、单元格格式 3、Excel读取4、Excel的CRUD4.1、查4.2、改4.3、删 1、Openpyxl模块 Openpyxl是一个用于处理xlsx格式Excel表格文件的第三方python库,几乎支持Excel表格的所有操作 基本概念&#x…...

NISP证书是什么?NISP含金量如何呢?

一、NISP是什么 NISP证书是国家信息安全水平考试(National Information Security Test Program,简称NISP),是由中国信息安全测评中心实施培养国家网络空间安全人才的项目。由国家网络空间安全人才培养基地运营/管理,并…...

操作系统备考学习 day6(2.3.2 - 2.3.4)

操作系统备考学习 day6 第二章 进程与线程2.3 同步与互斥2.3.2 实现临界区互斥的基本方法单标记法双标志先检查法双标志后检查法Peterson算法 进程互斥的硬件实现方法中断屏蔽方法TestAndSet指令Swap指令 2.3.3 互斥锁2.3.4 信号量整型信号量记录型信号量 第二章 进程与线程 2…...

家电行业 EDI:Miele EDI 需求分析

Miele是一家创立于1899年的德国公司,以其卓越的工程技术和不懈的创新精神而闻名于世。作为全球领先的家电制造商,Miele的经营范围覆盖了厨房、洗衣和清洁领域,致力于提供高品质、可持续和智能化的家电产品。公司的使命是为全球消费者创造更美…...

Android ConstraintLayout app:layout_constraintHorizontal_weight

Android ConstraintLayout app:layout_constraintHorizontal_weight <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:…...

FPGA行业应用一:LED控制器

什么是LED控制器 LED控制器已经有很多年头了&#xff0c;应该是上世纪90年代就开始有了。它的主要构成是&#xff1a; 1&#xff1a;视频信号源——如 电脑&#xff0c;机机&#xff0c;DVD&#xff0c;U盘等 2&#xff1a;视频处理器——通过 HDMI/DVI/网口接收来自视频源的…...

Pyspark读写csv,txt,json,xlsx,xml,avro等文件

1. Spark读写txt文件 读&#xff1a; df spark.read.text("/home/test/testTxt.txt").show() ------------- | value| ------------- | a,b,c,d| |123,345,789,5| |34,45,90,9878| -------------2. Spark读写csv文件 读&#xff1a; # 文件在hdfs上…...

LeetCode 接雨水 双指针

原题链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题面&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a…...

【Linux】【网络】传输层协议:UDP

文章目录 UDP 协议1. 面向数据报2. UDP 协议端格式3. UDP 的封装和解包4. UDP 的缓冲区 UDP 协议 UDP传输的过程类似于寄信。 无连接&#xff1a;知道对端的IP和端口号就直接进行传输&#xff0c;不需要建立连接。不可靠&#xff1a;没有确认机制&#xff0c;没有重传机制&am…...

数字音频工作站FL Studio 21中文版下载及电音编曲要用乐理吗 电音编曲步骤

FL Studio 21是一款强大的数字音频工作站&#xff08;DAW&#xff09;软件&#xff0c;为您提供一个完整的软件音乐制作环境。它是制作高质量的音乐、乐器、录音等的完整解决方案。该程序配备了各种工具和插件&#xff0c;帮助你创建专业的虚拟乐器&#xff0c;如贝斯、吉他、钢…...

金蝶云星空与旺店通·企业奇门对接集成其他出库查询打通创建其他出库单

金蝶云星空与旺店通企业奇门对接集成其他出库查询打通创建其他出库单 源系统:金蝶云星空 金蝶K/3Cloud&#xff08;金蝶云星空&#xff09;是移动互联网时代的新型ERP&#xff0c;是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”&#…...

Visual Studio 如何删除多余的空行,仅保留一行空行

1.CtrlH 打开替换窗口&#xff08;注意选择合适的查找范围&#xff09; VS2010: VS2017、VS2022: 2.复制下面正则表达式到上面的选择窗口&#xff1a; VS2010: ^(\s*)$\n\n VS2017: ^(\s*)$\n\n VS2022:^(\s*)$\n 3.下面的替换窗口皆写入 \n VS2010: \n VS2017: \n VS2022: \n …...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...