阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

接口的应用

370次阅读
没有评论

共计 3310 个字符,预计需要花费 9 分钟才能阅读完成。

1、接口概述与使用

1.1、什么是接口

接口(Interface),在 JAVA 编程语言中是一个抽象类型,是抽象方法的集合。接口通常以 interface 来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

1.2、接口定义

如果一个类只由抽象方法和全局常量组成,那么这种情况下不会将其定义为一个抽象类。只会定义为一个接口,所以接口严格的来讲属于一个特殊的类,而这个类里面只有抽象方法和全局常量,就连构造方法也没有。

interface A{// 定义一个接口 public static final String MSG = "hello";// 全局常量 public abstract void print();// 抽象方法,abstract 可以省略 }

1.3、接口使用

由于接口里面存在抽象方法,所以接口对象不能直接使用关键字 new 进行实例化。

1.3.1、class 类名 [implements 接口 1, 接口 2,…]{}

(1)接口必须要有子类,但此时一个子类可以使用 implements 关键字实现多个接口;

(2)接口的子类(如果不是抽象类),那么必须要重写接口中的全部抽象方法;

(3)接口的对象可以利用子类对象的向上转型进行实例化。

interface A{// 定义一个接口 A public static final String MSG = "hello";// 全局常量 public abstract void print();// 抽象方法 } interface B{// 定义一个接口 B public abstract void get(); } class X implements A,B{// X 类实现了 A 和 B 两个接口 @Override public void print() {System.out.println("接口 A 的抽象方法 print()"); } @Override public void get() {System.out.println("接口 B 的抽象方法 get()"); } } public class TestDemo {public static void main(String[] args){X x = new X();// 实例化子类对象 A a = x;// 向上转型 B b = x;// 向上转型 a.print(); b.get();} }

运行结果:

接口的应用

1.3.2、class 子类 [extends 父类] [implemetns 接口 1, 接口 2,…] {}

对于子类而言,除了实现接口外,还可以继承抽象类。若既要继承抽象类,同时还要实现接口

interface A{// 定义一个接口 A public static final String MSG = "hello";// 全局常量 public abstract void print();// 抽象方法 } interface B{// 定义一个接口 B public abstract void get(); } abstract class C{// 定义一个抽象类 C public abstract void change(); } class X extends C implements A,B{// X 类继承 C 类,并实现了 A 和 B 两个接口 @Override public void print() {System.out.println("接口 A 的抽象方法 print()"); } @Override public void get() {System.out.println("接口 B 的抽象方法 get()"); } @Override public void change() {System.out.println("抽象类 C 的抽象方法 change()"); } }

2、接口与抽象类继承

2.1、接口的继承

在 Java 中,一个抽象类只能继承一个抽象类,但一个接口却可以使用 extends 关键字同时继承多个接口(但接口不能继承抽象类)。

interface A{public void funA(); } interface B{public void funB(); } // C 接口同时继承了 A 和 B 两个接口 interface C extends A,B{// 使用的是 extends public void funC(); } class X implements C{@Override public void funA() { } @Override public void funB() { } @Override public void funC() {}}

2.2、接口的继承与抽象类继承比较

(1)一个抽象类只能继承一个抽象父类,而接口可以继承多个接口;

abstract class A{} abstract class B extends A{}
interface A{} interface B{} interface X extends A,B{}

(2)一个子类只能继承一个抽象类,却可以实现多个接口(在 Java 中,接口的主要功能是解决单继承局限问题)

interface A{} interface B{} abstract class C{} class X extends C implements A,B{}

(3)从接口的概念上来讲,接口只能由抽象方法和全局常量组成,但是内部结构是不受概念限制的,正如抽象类中可以定义抽象内部类一样,在接口中也可以定义普通内部类、抽象内部类和内部接口(但从实际的开发来讲,用户自己去定义内部抽象类或内部接口的时候是比较少见的),范例如下,在接口中定义一个抽象内部类:

interface A{public void funA(); abstract class B{// 定义一个抽象内部类 public abstract void funB(); } } class X extends A.B {@Override public void funB() {}}
// 在接口中如果使用了 static 去定义一个内接口,它表示一个外部接口: interface A{public void funA(); static interface B{// 使用了 static,是一个外部接口 public void funB(); } } class X implements A.B {@Override public void funB() {}}

3、接口实际应用

在日常的生活之中,接口这一名词经常听到的,例如:USB 接口、打印接口、充电接口等等。

如果要进行开发,要先开发出 USB 接口标准,然后设备厂商才可以设计出 USB 设备。

接口的应用

需求:现在假设每一个 USB 设备只有两个功能:安装驱动程序、工作。定义一个 USB 的标准:

interface USB {// 操作标准 public void install() ; public void work() ; } // 在电脑上应用此接口: class Computer {public void plugin(USB usb) {usb.install() ; usb.work() ;} } // 定义 USB 设备—手机: class Phone implements USB {public void install() {System.out.println("安装手机驱动程序。") ; } public void work() {System.out.println("手机与电脑进行工作。") ; } } // 定义 USB 设备—打印机: class Print implements USB {public void install() {System.out.println("安装打印机驱动程序。") ; } public void work() {System.out.println("进行文件打印。") ; } } // 定义 USB 设备—MP3: class MP3 implements USB {public void install() {System.out.println("安装 MP3 驱动程序。") ; } public void work() {System.out.println("进行 MP3 拷贝。") ; } } // 测试主类: public class TestDemo {public static void main(String args[]) {Computer c = new Computer() ; // 传递具体的 USB 设备进接口 c.plugin(new Phone()) ; c.plugin(new Print()) ; c.plugin(new MP3()); } }

运行结果:

接口的应用

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-06发表,共计3310字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7819848
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...