Java面向对象之接口——interface
feilongw 2024-12-22 15:13 4 浏览 0 评论
什么是接口
一般计算机中的接口分为硬件接口和软件接口。
硬件接口:是指两个硬件设备之间的连接方式,既包括物理上的接口,还包括逻辑上的数据传送协议。
软件接口:通常是指程序代码,在Java中表示一种特殊的类,是具有的N个方法的特征集合,表示一种规范;还有一种情况数据接口,表示客户端和服务端之间的数据交互的方式。
比如,显示器中封装了很多电子元器件,这些元器件连接在一起为显示器的正常共工作提供支持,那显示器如何与外界的其他设备(如电脑主机、外放音响、耳机等设备)通信交互呢?也是通过显示暴露的通信接口——显示器上暴露的“孔”。通过连接这些“孔”,其他设备就能和显示一起工作,能够获取显示器中的信息数据,也能够为显示器提供一些显示器不具备的功能,比如:优质的音响效果。
接口的设计目的:从上述的显示器例子中,不难发现,接口可以看作是设备和设备之间的通信桥梁,通过交换数据完成通信。接口表示一种规范/约束/实现者必须遵循的规范,目的就是用来约束使用者应该怎么做。那如果没有这些规范(接口),会出现什么样的问题?
在如今这个智能机泛滥的年代,不知道大家有没有怀念当年功能机和山寨机横行的年代,在那些年代,收件之间的充电设备各个品牌有各个品牌的“特色”,各个品牌均不一样;如果充电设备丢了,或者损坏了,往往要花费很大的代价才能才能买到新的,所以在当时的万能充电器才能流行一时,但其充电效果却并不如人意。
由此带来的问题极大的困扰了广大手机用户。
直到Android系统的出现,统一了充电接口规范后,这个问题才得到了有效解决。大多数Android手机的充电的接口是相同的( Micro-USB/Type-c/Lightning)。当然了,苹果手机是个特立独行的大佬。
生活中,USB接口和我们经常接说的USB插槽其实是有所偏差的,其并不是我们平时所看到的那些USB插槽,而是那些USB插槽所遵循的一种规范(标准)。USB的英文是Universal Serial Bus(通用串行总线),用于规范电脑与外部设备的连接和通讯,广泛应用于PC领域的接口技术。
我们所看到的那些USB插槽是根据USB接口规范设计出来的产品,对于不同型号的USB设备而言,他们各自的USB插槽都需要遵循同一个规范,如此可以保证任何插入USB插槽的设备都能与主板正常通信。对于同一种型号的主板上的多个USB插槽,他们有相同的数据交换方式,相同的实现细节;在面向对象的思想中,可认为他们都是同一个类的不同实例,也就是说插槽是USB规范的实例。
接口只定义了应当遵循的规范,却并不关心这些规范的内部数据和其功能的实现细节,从而分离了规范和实现,增强了系统的可拓展性和可维护性。这样做的好处:比如,主板上提供了USB插槽,只要一个遵循了USB规范的鼠标,就可以插入USB插槽,并与主板正常通信,而不必关心至于这个鼠标的厂商,鼠标内部实现。当鼠标坏了的时候,只需要换个鼠标就行。
Java中的接口
Java中的接口,书面解释是多个抽象类的抽象就是接口;通俗点说,在Java中最小的程序单元是类,而接口其实是一个特殊的类。和USB接口一样,Java中的接口也表示规范,用于定义一组抽象方法,表示某一类事物必须具备的功能,接口的实现类来实现该接口并提供接口中每个方法的实现。
定义类语法: 权限修饰符 class 类名{}
定义接口语法: 权限修饰符 interface 接口名{}
接口的命名:
- 表示具有某些能力的,可以以able/handler结尾。如: Walkable.java
- 以I开头表示接口,如:IWalkable.java
接口在编译成功之后,和类一样,也是.class的字节码文件。
接口中的成员:
1.接口中没有构造器,因为接口不能使用new关键字创建对象(不能 new );
2.接口中不能定义普通方法,接口中的方法都是默认为公共的抽象方法,而且都是 public abstract 修饰的;所以接口中的方法的public符 和 abstract 修饰符是可以省略不写的;
3.接口中定义的成员变量,实质是全局静态常量,默认使用 public static final来修饰;
public static final String NAME = "老夫不正经";
4.接口中定义的内部类都是公共的静态内部类,默认使用public static来修饰内部类.
public static interface Openable {}
标志接口:没有任何成员,仅仅提供一个接口定义的接口,其就只是一个标志,若有类实现该接口,则该类就属于接口这一派系。这个使用的不多,了解就好。
常量接口:使用接口来封装多个常量信息,称之为常量接口,其目的和普通常量类相同,但在这里不建议使用。
接口的特点:
- 接口没有构造器,更不能显式定义构造器,故接口不能被实例化。
- 接口里的方法方法全是抽象公共的,默认修饰符是public abstract。
- 接口里的字段全是全局静态常量,默认修饰符是public static final。
- 接口里的内部类全是公共静态的,默认修饰符是public static。
接口的继承:
接口只能继承接口,不能继承类,且接口支持多继承(类是单继承关系)。接口继承语法如下:
[修饰符] interface 接口名 extends 接口1,接口2
类和类之间的继承关系用extends关键字来表示,接口和接口之间也只能是继承关系,也使用extends 关键字来表示。
接口和实现类之间只能是实现关系,而且是类实现接口,用implements关键字来表示。
接口的实现
接口仅仅只是定义了某一类事物应该具有某些功能,但是没有提供任何实现。但在Java 8以及以后的版本中,接口是可以有默认实现的。此时,我们定义了一个类,再用该类去实现接口,那么就必须覆盖接口中的方法,提供功能实现,从而实现类接口中定义的功能。
类实现接口:一个类可以实现多个接口,从而也弥补了类的单继承问题。语法如下:
[修饰符] class 实现类名 extends 父类 implements 接口1,接口2{}
接口和实现类之间的关系,称之为"实现关系",使用implements关键字来表示,但有时候为了方便,也把这个实现关系称之为特殊继承关系。可以这样理解:接口是实现类的父类:实现类就是接口的子类。
面向接口编程
接口和实现类的多态关系是在开发中比较常见的多态体现
接口 变量 = 创建实现类对象;//体现了多态思想
接口中的方法是公共的抽象的,所以实现类必须覆盖接口中的方法,并且方法必须使用public修饰,因为接口中的方法默认就是使用public修饰的。
接口和抽象类的相同点:
- 都位于继承的顶端,用于被其他类或者接口实现或继承;
- 都不能被实例化;
- 都可以定义抽象方法,其子类/实现类都必须覆写这些抽象方法;
接口和抽象类的不同点:
- 接口没有构造方法,抽象类有构造方法;
- 抽象类可包含普通方法和抽象方法,接口只能包含抽象方法(Java8之前);
- 类是单继承的,一个类只能继承一个直接父类(可能是抽象类),接口是支持多继承的;一个可以类实现多个接口(接口弥补了Java的单继承);
- 成员变量:接口里默认是public static final,抽象类是默认包权限;
- 方法:接口里默认是public abstract,抽象类默认是默认包访问权限;
- 内部类:接口里默认是public static,抽象类默认是默认包访问权限;
如果接口和抽象类可以完成相同的功能,尽量使用接口,这就是面向接口编程。面向接口编程在于使用多态的好处,把实现类对象赋给接口类型变量,屏蔽了不同实现类之间的实现差异,从而可以做到通用编程。
案例:使用USB设备来工作。
完结。
相关推荐
- win7如何录屏?手把手教你怎么录制电脑屏幕
-
现在大部分人的电脑是win10系统,但仍有小伙伴的电脑是win7电脑,有时候也需要对电脑屏幕进行录制。那你知道win7如何录屏吗?虽然win7电脑不像win10电脑有自带的录屏工具XboxGame...
- Windows系统必会的八个快捷键,让你效率提升数倍
-
前言:当电脑开启十几个窗口,你还在一个一个的最小化窗口时,别人可以瞬间回到电脑桌面;当电脑开启十几个窗口,你还在一个一个的最小化窗口再试图打开[我的电脑]窗口时,别人在你还没有最小化第一个窗口时已经打...
- 7个超实用的电脑截图快捷键
-
大家在截图时,最常用的就是QQ的截图方法。QQ可以说是聊天软件里截图功能做得最好的,截图软件里聊天功能做得最好的。其截图功能既简单又好用,只需要一个快捷键「Ctrl+Alt+A」。确定好截图窗口,鼠...
- Windos快捷键
-
办公软件中的快捷键我们了解不少,关于Windows系统的操作快捷键你知道几个呢?一、【Win+D】:快速切换到系统桌面(再按一下就可以返回到之前的页面)二、【Win+M】:最小化所有窗口(此组合键无法...
- 电脑Win键失灵没反应怎么修复?3步优化轻松修复
-
最近突然发现按键盘上的“Win键”失灵了,没有任何反应。这么一来很多和Win键相关的组合快捷键都使用不了了,比如:Win+R,Win+S,Win+I,Win+E,Win+Q。是我键盘坏了吗?我换了别的...
- Win7电脑的5大截屏方式,总有你不知道的!
-
有时需要将电脑屏幕上的内容截取下来,该怎么操作呢?或许你会用QQ截图,但其实windows系统已经自带了截图哦,今天我就为大家说道说道。1、按Prtsc键这样获取的是整个电脑屏幕的内容,可直接粘贴使用...
- Windows快捷键大全
-
一、常见用法:F1 显示当前程序或者windows的帮助内容。F2 当你选中一个文件的话,这意味着“重命名”F3 当你在桌面上的时候是打开“...
- win7截图快捷键有什么 win7自带截图快捷键怎么用
-
win7截图快捷键有什么?作为经典的操作系统版本,Windows7仍然被许多用户广泛使用。大家对Windows7系统的各项功能已经非常清楚,就像屏幕截屏的快捷键一样,大家也都相当熟悉。不过你是否知...
- win7音量调节窗口显示步骤
-
用户反馈在使用音量调节时,点击音量调节图标发现调节窗口不见了,下面给大家介绍显示win7音量调节窗口步骤。 1、同时按下快捷键“win+r”打开运行窗口,输入“regedit”命令并回车,如下图所示...
- Win7电脑如何快速截图
-
日常工作中经常需要截图,都都要借助第三方软件来截图,下面说一下Win7电脑全屏截图及部分截图的方法。将键盘的屏幕截图按钮PrScrn按钮,按PrScrn按钮截取整个屏幕,Ctrl+PrScr...
- 系统小技巧:为软件让路 关闭系统Win+快捷键
-
一些软件使用Win键加某个键作为快捷键来调用某个功能,但有时软件中所用快捷键与系统快捷键发生冲突,造成软件快捷键无法使用,尤其是早期开发的软件与Windows10之间的这种冲突比较普遍。如果暂时关闭...
- Win7电脑怎么快速锁屏?一个锁屏快捷键,帮你轻松锁定防偷看
-
平时我们在使用Win7系统电脑来进行学习或者是工作时,我们往往会因为有会议要开,或者是有事情要做,从而需要离开电脑。但是如果此时电脑上正在编辑很重要的文档,那么此时让电脑锁屏,不仅可以防止我们的隐...
- 最佳Windows 11键盘快捷键列表
-
想用键盘在Windows11上运行吗?以下是使用快捷方式在Windows11中执行常见任务的方法。尽管Windows10中支持的几乎所有快捷方式在Windows11中都保持不变,但微软古老...
- 五分钟包学会 笔记本装Win8.1详尽攻略
-
|责编:王冬奇经过半年多的等待,我们终于迎来了Windows8.1系统的2014UPDATE1升级。在此之前Windows8和Windows7相比引入了更简单直观、易于操作的WindowsU...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- excel换行 (95)
- 虚拟机安装 (78)
- web服务器安全配置 (77)
- excel2007视频教程 (82)
- 右键菜单恢复 (93)
- 启动项命令 (81)
- excel打开空白 (83)
- phpmyadmin 下载 (75)
- inventor教程 (81)
- flv文件播放 (83)
- tomcat 7 0 (82)
- 服务器正在运行中 (100)
- m3u8 (89)
- 矢量图是什么 (79)
- 静态ip怎么设置 (82)
- windows update是什么意思 (86)
- 文件切割 (77)
- filezilla_server (79)
- 裁切图片 (76)
- rank函数 (76)
- 网络地址分类 (79)
- 二维码转链接在线生成 (97)
- 字体在哪个文件夹 (78)
- solidworks工程图模板 (82)
- securecrt (77)