当前位置: 首页 > 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 …...

SDXL 1.0绘图工坊效果展示:多风格高清作品集,看看AI能画出多惊艳的图片

SDXL 1.0绘图工坊效果展示&#xff1a;多风格高清作品集&#xff0c;看看AI能画出多惊艳的图片 1. 开篇&#xff1a;当AI成为数字艺术家 想象一下&#xff0c;你只需要输入一段文字描述&#xff0c;就能在几秒钟内获得一张细节丰富、风格多样的高清图像——这不是科幻电影&am…...

3个终极窗口隐藏技巧:如何用Boss-Key打造你的数字隐身衣

3个终极窗口隐藏技巧&#xff1a;如何用Boss-Key打造你的数字隐身衣 【免费下载链接】Boss-Key 老板来了&#xff1f;快用Boss-Key老板键一键隐藏静音当前窗口&#xff01;上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 你有没有经历过这样的…...

如何用60元的消费级IMU实现车载组合导航?SINS/NHC实战解析

如何用60元的消费级IMU实现车载组合导航&#xff1f;SINS/NHC实战解析 在自动驾驶和车载导航领域&#xff0c;高精度定位一直是核心技术难题。传统方案依赖昂贵的专业级惯性测量单元(IMU)&#xff0c;成本动辄数千元&#xff0c;让许多预算有限的开发者望而却步。但你可能不知…...

Mac视频预览增强工具:解决MKV文件无法预览问题的全方位方案

Mac视频预览增强工具&#xff1a;解决MKV文件无法预览问题的全方位方案 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://g…...

电动汽车 Simulink 模型探索:从模块到实际应用

电动汽车模型的各模块simulink模型包括驾驶员模块&#xff0c;电机模块&#xff0c;控制器模块等&#xff0c;包含模块讲解文档在电动汽车的研发领域&#xff0c;通过 Simulink 构建模型是深入理解和优化车辆性能的关键一步。今天咱们就来唠唠电动汽车模型里几个重要的 Simulin…...

免费解锁百度网盘SVIP特权:Mac用户终极提速方案

免费解锁百度网盘SVIP特权&#xff1a;Mac用户终极提速方案 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘Mac版的龟速下载而烦恼吗&am…...

如何让Windows 11运行如飞?Win11Debloat系统优化工具全解析

如何让Windows 11运行如飞&#xff1f;Win11Debloat系统优化工具全解析 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简…...

[特殊字符] 为什么99%的数字孪生都是“假的”?——镜像视界三维重构与视频反演技术重塑空间智能底层逻辑

&#x1f680; 为什么99%的数字孪生都是“假的”&#xff1f;——镜像视界三维重构与视频反演技术重塑空间智能底层逻辑如果你接触过数字孪生项目&#xff0c;或者看过相关展示系统&#xff0c;大概率见过这样一种典型场景&#xff1a;一个极具视觉冲击力的三维城市或工业模型&…...

LobeChat新手入门指南:从零开始,打造专属智能助手

LobeChat新手入门指南&#xff1a;从零开始&#xff0c;打造专属智能助手 1. 为什么选择LobeChat&#xff1f; 在当今数字化时代&#xff0c;智能对话系统已经成为提升工作效率和生活品质的重要工具。LobeChat作为一款开源的高性能聊天机器人框架&#xff0c;凭借其易用性和强…...

QWen 3.5plus总结的总结基准测试结果的正确方法

原文地址&#xff1a;https://dl.acm.org/doi/epdf/10.1145/5666.5673 如何用统计撒谎&#xff1a;总结基准测试结果的正确方法 作者&#xff1a;PHILIP J. FLEMING 和 JOHN J. WALLACE 在文献中&#xff0c;性能结果经常使用性能比率的算术平均值来总结&#xff0c;在某些情况…...