千家信息网

java接口指的是什么

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章主要介绍java接口指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!接口概念官方解释:Java 接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的
千家信息网最后更新 2025年11月16日java接口指的是什么

这篇文章主要介绍java接口指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

接口概念

官方解释:Java 接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

我的解释:接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决 Java 无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。或者我们可以直接把接口理解为100%的抽象类,既接口中的方法必须全部是抽象方法。(JDK1.8之前可以这样理解)

接口的特点

就像一个类一样,一个接口也能够拥有方法和属性,但是在接口中声明的方法默认是抽象的。(即只有方法标识符,而没有方法体)。

  • 接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。

  • 一个接口就是描述一种能力,比如"运动员"也可以作为一个接口,并且任何实现"运动员"接口的类都必须有能力实现奔跑这个动作(或者 implement move()方法),所以接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。

  • 如果一个类实现了一个接口中要求的所有的方法,然而没有提供方法体而仅仅只有方法标识,那么这个类一定是一个抽象类。(必须记住:抽象方法只能存在于抽象类或者接口中,但抽象类中却能存在非抽象方法,即有方法体的方法。接口是百分之百的抽象类)

  • 一个 JAVA 库中接口的例子是:Comparator 接口,这个接口代表了"能够进行比较"这种能力,任何类只要实现了这个Comparator 接口的话,这个类也具备了"比较"这种能力,那么就可以用来进行排序操作了。

为什么要用接口

  1. 接口被用来描述一种抽象。

  2. 因为 Java 不像C++一样支持多继承,所以 Java 可以通过实现接口来弥补这个局限。

  3. 接口也被用来实现解耦。

  4. 接口被用来实现抽象,而抽象类也被用来实现抽象,为什么一定要用接口呢?接口和抽象类之间又有什么区别呢?原因是抽象类内部可能包含非 final 的变量,但是在接口中存在的变量一定是 final,public,static 的。

接口的语法实现

为了声明一个接口,我们使用 interface 这个关键字,在接口中的所有方法都必须只声明方法标识,而不要去声明具体的方法体,因为具体的方法体的实现是由继承该接口的类来去实现的,因此,接口并不用管具体的实现。接口中的属性默认为 Public Static Final.一个类实现这个接口必须实现这个接口中定义的所有的抽象方法。

一个简单的接口就像这样:拥有全局变量和抽象方法。


为了实现这个接口,我们使用 implements 关键词去实现接口:


其中 testClass 类实现了我们上面刚才定义的 in1 这个接口,既然你要实现接口,也就是实现接口代表的一种能力,那么你就必须去实现接口给你规定的方法,只有把接口给你规定的抽象方法都给实现了,才承认你这个类实现了这个接口,实现了这个接口代表的某种功能。上图实现了接口中规定的 display()方法。


写一个测试类,用来测试一下我们刚才实现的这个接口,因为testclass类的对象t实现了接口规定的 display 方法,那么自然而然就可以调用 display()方法咯。

接口的进一步理解

我们知道,如果某个设备需要向电脑中读取或者写入某些东西,这些设备一般都是采用 USB 方式与电脑连接的,我们发现,只要带有 USB 功能的设备就可以插入电脑中使用了,那么我们可以认为USB就是一种功能,这种功能能够做出很多的事情(实现很多的方法),其实 USB 就可以看做是一种标准,一种接口,只要实现了USB标准的设备我就认为你已经拥有了 USB 这种功能。(因为你实现了我 USB 标准中规定的方法),下面是具体的例子:

先声明USB接口:其中规定了要实现USB接口就必须实现接口规定实现的 read( )和 write( )这两个方法。

interface USB { void read(); void write();}

然后在写一个U盘类和一个键盘类,这两个类都去实现 USB 接口。(实现其中的方法)

class YouPan implements USB {
@Override
public void read() {
System.out.println("U盘正在通过USB功能读取数据"); }
@Override
public void write() {
System.out.println("U盘正在通过USB功能写入数据"); }}
这是U盘的具体实现。
class JianPan implements USB {
@Override
public void read() {
System.out.println("键盘正在通过USB功能读取数据"); }
@Override
public void write() {
System.out.println("键盘正在通过USB功能写入数据"); }}
这是键盘的具体实现。

那么,现在U盘和键盘都实现了 USB 功能,也就是说 U 盘和键盘都能够调用 USB 接口中规定的方法,并且他们实现的方式都不一样。

我们在写一个测试,来看看具体的实现:

public class Main {
public static void main(String[] args) {
//生成一个实现可USB接口(标准)的U盘对象
YouPan youPan = new YouPan();
//调用U盘的read( )方法读取数据
youPan.read();
//调用U盘的write( )方法写入数据
youPan.write();
//生成一个实现可USB接口(标准)的键盘对象
JianPan jianPan = new JianPan();
//调用键盘的read( )方法读取数据
jianPan.read();
//调用键盘的write( )方法写入数据
jianPan.write(); }}
结果如下:


感兴趣的同学可以去在线IDE平台自己验证一下:点击打开链接

关于接口的几个重点

  1. 我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的,这样怎么可能产生具体的实例呢?但是,我们可以使用接口类型的引用指向一个实现了该接口的对象,并且可以调用这个接口中的方法。因此,上图中最后的方法调用我们还可以这样写:(实际上就是使用了 Java 中多态的特性)

public class Main {
public static void main(String[] args) {
//生成一个实现可USB接口(标准)的U盘对象
//但是使用一个接口引用指向对象
//USB接口类引用可以指向一个实现了USB接口的对象
USB youPan = new YouPan();
//调用U盘的read( )方法读取数据
youPan.read();
//调用U盘的write( )方法写入数据
youPan.write();
//生成一个实现可USB接口(标准)的键盘对象
//但是使用一个接口引用指向对象
//USB接口类引用可以指向一个实现了USB接口的对象
USB jianPan = new JianPan();
//调用键盘的read( )方法读取数据
jianPan.read();
//调用键盘的write( )方法写入数据
jianPan.write(); }}

2.一个类可以实现不止一个接口。

3.一个接口可以继承于另一个接口,或者另一些接口,接口也可以继承,并且可以多继承。

4.一个类如果要实现某个接口的话,那么它必须要实现这个接口中的所有方法。

5.接口中所有的方法都是抽象的和 public 的,所有的属性都是 public,static,final 的。

6.接口用来弥补类无法实现多继承的局限。

7.接口也可以用来实现解耦。

接口的通俗理解

前面我们讲多态的时候用"空调"--"遥控器"的方式去理解多态,实际上在上面的的几个重点中的第一条讲的也是多态的实现,比如,我们可以把"节能"作为一种标准,或者说节能就是一个"接口",这个接口中有一个方法,叫做变频方法,任何空调,如果要称得上叫做节能空调的话,那么必须实现"节能"这个接口,实现"节能"这个接口,也就必须实现"节能"接口中规定实现的"变频"方法,这样才算是真正的实现了"节能"这个接口,实现了"节能"这个功能。

当某个空调实现了"节能"接口后,这个空调就具备了节能的功能,那么我们也可以不用空调类的引用指向空调对象,我们可以直接使用一个"节能"接口类型引用的"遥控器"去指向"空调",虽然这个"遥控器"上面只有一个按键,只有一个"变频"的方法,但是"遥控器"所指向的空调是实现了"节能"这个接口的,是有"变频"方法的实现的,我们用这个只有一个"变频"方法的遥控器去命令空调调用"变频"方法,也是行得通的。

接口的标识用法

虽然接口内部定义了一些抽象方法,但是并不是所有的接口内部都必须要有方法,比如 Seriallizable 接口,Seriallizable 接口的作用是使对象能够"序列化",但是 Seriallizable 接口中却没有任何内容,也就是说,如果有一个类需要实现"序列化"的功能,则这个类必须去实现 Seriallizable 接口,但是却并不用实现方法(因为接口中没有方法),此时,这个 Serilizable 接口就仅仅是一个"标识"接口,是用来标志一个类的,标志这个类具有这个"序列化"功能。具体的实现请参考我的另一篇文章--JAVA 之 IO 流。

接口在生活中的思想体现

其实,在我们的生活当中,有很多地方都体现了"接口"的思想,想必,正在阅读这篇博文的你,是不是也喜欢摄影呢?

玩摄影的童鞋都知道,单反由相机和镜头组成,相机分不同的型号,有半画幅的,也有全画幅的。镜头也是一样的,分长焦,短焦;还有定焦和变焦。每种镜头都有各自特定的发挥场景。正是因为镜头的多元化,使得我们的摄影能够"术业有专攻"。大家想一想,如果我们的单反相机部分和镜头部分是固定在一起的,不能够更换镜头,那么将会多么的糟糕啊!

因此,每个相机品牌为了能够兼容不同的镜头,各自发布了一套镜头卡口的标准,这套标准就好比我们前面提到的"接口",都是某种"约束"。举个栗子,我们佳能的相机,不管你是哪一家镜头生产厂商,腾龙也好,适马也好,只要你按照我佳能卡口的标准来生产镜头,你生产的镜头都能够很好的在我佳能相机上面驱动。

因此,当我们打开"某东",准备给自己的新相机买镜头的时候,就不难发现,我们需要根据自己相机的品牌来挑选特定卡口的镜头,这样的镜头才能被我们的相机常驱动。

回到 Java 上面来说,其实接口给我们带来的最大的好处就是"解耦"了,相机能够搭配不同的镜头,才能有各种各样的搭配玩法,变得更加的灵活。在软件系统中也是一样的,接口可以有很多不同"特色"的实现类,我们只需要声明同一个接口,却可以引用很多个该"接口"引申出来的"子类",这不也大大增强了我们软件系统中组件的灵活性吗?

以上是"java接口指的是什么"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

接口 方法 功能 镜头 对象 数据 标准 键盘 节能 相机 空调 指向 不同 只有 就是 能力 变频 代表 标识 正在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全风险构成的要素 上海网络安全审计系统咨询中心 软件开发组长考核指标 我的世界服务器能配多少人 厦门起星网络技术有限公司 计算机网络技术是什么类专业 软件开发公司一般做什么 政府网络安全审查怎么写 饭店点菜宝必须装服务器吗 档案数据库的特点共享性 思科网络技术epub 圣猫网络技术服务有限公司 思禾互联网科技有限公司薪资待遇 lol服务器怎么保存 竞技世界北京网络技术 软件开发在家做什么工作好 Linux软件开发很难吗 卫辉天气预报软件开发 内蒙古数字化城管软件开发系统 投注计划软件开发 饕餮服务器 java获取服务器的地址 茅箭区智能软件开发技术指导 怎么样找网络安全工程师 明星拍立得软件开发 入侵数据库判几年 思禾互联网科技有限公司薪资待遇 潮汐对海底数据库影响 隐私性属于网络安全的特性对不对 数据库技术应用场景
0