Java接口讲解
Java中的接口其实就是一套“标准”或者“规范”,比如使用接口实现【电脑对鼠标、键盘使用USB接口的管理】,鼠标和键盘他们与接口之间并不存在子类和父类的关系,但是鼠标和键盘又都要通过USB接口插入电脑,如果没有一个统一的规范,那么电脑该怎么识别呢?所以就需要一个“标准”来统一约束鼠标和键盘的使用规则,下面来举一个小例子:
public interface USB {
void work();
}
class Keyboard implements USB{
@Override
public void work() {
System.out.println("这里是键盘实现USB的方法");
}
}
class Mouse implements USB{
@Override
public void work() {
System.out.println("这里是鼠标实现USB的方法");
}
}
class computer {
void computerStart(){
System.out.println("--电脑启动");
}
void computerStop(){
System.out.println("--电脑关闭");
}
void useUSB(USB usb){
USB u = usb;
u.work();
}
}
class TestUsB {
public static void main(String[] args) {
computer computer = new computer();
computer.computerStart();
computer.useUSB(new Keyboard());
computer.computerStop();
}
}
在这里就统一定义了一个USB的接口标准,这个标准就定义了一个方法work(),这个USB接口就是电脑上的USB接口,不管什么设备,如果想要通过这个USB接口连接我的电脑,都要按照我的一个规定来做,这个规定就是这个work方法,但是为什么这里只是定义了一个方法而没有具体实现呢?因为电脑的USB接口并不知道要插入的设备是谁,所以就事先写了一个“合同”放在这里,这个合同是空白的,如果有设备要通过“我”来连接电脑,那就把这个协议拿走,自己在上面签订一个协议。
public interface USB {
2 void work();
3 }
比如:现在键盘要通过USB连接电脑,键盘就需要把那份“协议”拿过来,然后在上面写下信息,表示“遵守约定”,所以就写成:class Keyboard 通过implements关键字去遵循 USB的约定,并且把USB的一个协议( work方法 )拿过来在上面写下约定。这就是 实现接口,然后重写接口的方法。
class Keyboard implements USB{
@Override
public void work() {
System.out.println("这里是键盘实现USB的方法");
}
}
在比如说,这里又有一个鼠标也要通过USB连接电脑,所以它也要通过 implements关键字去遵循 USB的约定,然后把USB的一份协议拿过来,在上面签订这份协议,(我只是打印一句话,来区分是哪个设备)
class Mouse implements USB{
@Override
public void work() {
System.out.println("这里是鼠标实现USB的方法");
}
}
现在是测试两个设备通过USB来连接电脑,既然要使用电脑,肯定要建立一个电脑的实体,就是new一个电脑,电脑本身也有很多功能,比如开启电脑、关闭电脑、在电脑上一系列的操作等等,还有一个功能就是要使用USB的功能,因为要通过这个USB来连接外部设备,所以在这里定义一个方法:useUSB(USB usb),这个方法的参数接收的是一个USB类型的对象,因为电脑要通过这个借口连接很多设备,还没有连接之前,并不知道要连接的是哪一个,所以就事先定义一个USB标准的对象,因为所有能连接电脑的设备都遵循了这一标准,没有遵循这个标准的(没有在USB这个标准上签订协议的)都不能连接电脑。
class computer {
void computerStart(){
System.out.println("--电脑启动");
}
void computerStop(){
System.out.println("--电脑关闭");
}
void useUSB(USB usb){
USB u = usb;
u.work();
}
}
电脑、鼠标、键盘类以及接口标准也定义好了,接下里就是用户来使用电脑了,看看到底这个电脑能不能通过我们刚才定义的接口标准来使用鼠标或者键盘,看下面代码,首先要使用电脑,就需要通过new关键字创建一个电脑的实体,然后才能真正使用,通过调用电脑的computer.computerStart();方法,以及computer.computerStop();方法,是测试电脑的这两个功能,可以打印电脑“电脑启动”和“电脑关闭”功能,下面我们通过使用电脑的computer.useUSB(new Keyboard()); 这个功能来插入个(就是New 一个)设备。
class TestUsB {
public static void main(String[] args) {
computer computer = new computer();
computer.computerStart();
computer.useUSB(new Keyboard()); /
computer.computerStop();
}
}
上面的代码就是测试一下键盘,就是插入一个键盘,此时会调用电脑的useUSB(USB usb)这个方法,就是使用USB方法,当插入一个键盘是,这里就会接收到一个键盘的对象,因为键盘已经在上面“签订了USB标准”,所以USB是识别的,并且是认识的,所以看到他之后,立即调用键盘之前签订的那个协议,并且通过键盘的work方法把键盘的功能调用过来。那么这里就实现了使用键盘的功能。如果测试类里通过new 一个鼠标对象,这里的USB标准会识别出“这个是鼠标,调用鼠标的方法”。这个其实是一个多态的使用。
void useUSB(USB usb){
2 USB u = usb;
3 u.work();
4 }
最终打印输出如下图所示:

以上就是通过一个小的例子来说明JAVA中接口的使用方法,您如果觉得对您的理解有帮助的话,请帮忙准发分享一下,能帮助更多的人来理解接口
Java接口讲解的更多相关文章
- 对接第三方平台JAVA接口问题推送和解决
前言 本节所讲为实际项目中与第三方对接出现的问题最后还是靠老大解决了问题以此作为备忘录,本篇分为三小节,一小节解析Java加密接口数据,二小节解析XML文件需注意问题,最后一节则是请求Java Soa ...
- java 接口详解
定义接口 接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口.Java 接口本身没有任何实现,只描述 public 行为,因此 Java 接口比 Java 抽象类更抽象化.Jav ...
- Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- Java接口 详解(二)
上一篇Java接口 详解(一)讲到了接口的基本概念.接口的使用和接口的实际应用(标准定义).我们接着来讲. 一.接口的应用—工厂设计模式(Factory) 我们先看一个范例: package com. ...
- java集合讲解
java集合讲解 1.概述 集合类的顶级接口是Iterable,Collection继承了Iterable接口 常用的集合主要有 3 类,Set,List,Queue,他们都是接口,都继于Collec ...
- java接口调用——webservice就是一个RPC而已
很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...
- java 接口的作用和好处
1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意 ...
- java接口
一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...
- java接口的嵌套
java接口 1.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值 2.接口中的方法默认都是 public abstract ...
随机推荐
- C# ASP 上传/下载文件
1. 上传文件前台页面 <div style="padding-left:20px;"> <asp:FileUpload ID="FileUpload ...
- k8s使用需认证的私服仓库
本文内容 在K8s中使用需认证的私服仓库需要导入认证信息到集群中,常规导入方式有两种: 使用Docker已登录的仓库密文导入 使用命令行创建Secret对象导入 本文介绍的就是以上两种方法. 使用Do ...
- Umlet和draw.io 使用心得
文章目录 软件使用心得 1. Umlet 画图软件 1.1 前言 1.2 优点 1.3使用小trick 1.3.1 灵活改变箭头形式 1.3.2 整体复制 1.3.3 快速复制 2. draw.io ...
- Java的注解浅析
人的一生就像一篇文章,只有经过多次精心修改,才能不断完善 Java注解概念理解: Java注解又称为Java标注,是JDK5引入的一中注释机制,Java中大家熟悉的五种注解分别是:@Override, ...
- 【笔记】 springCloud--Alibaba--服务注册和服务发现
接着上一次的nacos初步讲解和安装 任意门:https://www.cnblogs.com/Yangbuyi/p/13479767.html 如果启动失败的话 上一篇也是讲解过的. 本文章开始服务注 ...
- Git操作之码云代码clone
安装Git https://git-scm.com/book/zh/v2/起步-安装-Git Git的网站上有详细的分各种系统的安装教程. 配置Git 1. 打开你要放置项目的本地路径,右键选择$ G ...
- java多线程:线程间通信——生产者消费者模型
一.背景 && 定义 多线程环境下,只要有并发问题,就要保证数据的安全性,一般指的是通过 synchronized 来进行同步. 另一个问题是,多个线程之间如何协作呢? 我们看一个仓库 ...
- Java 中几种常用设计模式
Java 中一般认为有23种设计模式,当然暂时不需要所有的都会,但是其中常见的几种设计模式应该去掌握. 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模 ...
- Logistic回归之有序logistic回归分析
Logistic回归分析(logit回归)一般可分为3类,分别是二元logistic回归分析.多分类Logistic回归分析和有序Logistic回归分析.logistic回归分析类型如下所示. Lo ...
- 牛客网PAT练习场-数素数
题解:就是一道素数筛选法 题目地址:https://www.nowcoder.com/questionTerminal/e0fb49acb75f47e8b6fa2077d9071799 /** * C ...