IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 面试官:说说你项目的API如何封装的?你:欸,纳尼??什么是API【一文带你详解API】【Java养成】 -> 正文阅读

[Java知识库]面试官:说说你项目的API如何封装的?你:欸,纳尼??什么是API【一文带你详解API】【Java养成】

Java养成计划----学习打卡第五天

Java入门到精通(打卡第五天)


学习内容

接口interface,API应用程序接口应用


内容管理

Hello!我是C风,专注于算法以及Java养成,如果觉得我的文章写的不错,就点个赞叭~~

面试的时候面试官来一句:说说你们项目的API 是怎么封装的?你:欸,纳尼??什么是API,API的作用是什么,API的应用,今天就带大家了解一下API的内容

API的简单介绍

API is the messager that take requests and tell a system what you want to do. And then return the respose back to you

举个例子:API就是餐厅的服务员,你是一个顾客,在看着你的菜单,厨房作为system在准备你的订单,你和厨房之间怎么联系呢,就需要API 服务员来帮忙 将你的需求告诉系统,然后再将系统的反馈(food)交给你,所以有了API就有了万物互联的可能。

API 是一些预先定义的方法,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

接口interface

那说到API,我们先来了解一下接口这个概念,毕竟API最后一个单词就是interface,那什么又是接口呢?【手动回答】在生活中我们听到接口这个词一般就是💻,📱的USB接口啊,这里只要符合接口的类型,我们是不是就可以成功对接了,比如USB风扇,USB鼠标,U盘;

我们之前已经提到过抽象类的概念,就是类名前面有abstract关键字就是抽象类;抽象类里面可以有抽象方法,也可以没有抽象方法,当一个类的方法全部是抽象方法时,那我们这种抽象类就叫做接口

但是这时我们就不能再用class来定义接口了,而是使用interface来定义接口,接口里面的方法都是抽象的;

package java_study;

public interface UsbInterface {
	//连接的过程
	public abstract void connect();
	//服务的过程
	public abstract void service();
	//退出
	public abstract void exit();
}

这里我们就模拟了一下电脑的USB 接口,你插入U盘之后,首先就是连接的过程,之后就是连接成功之后就要进行服务,比如你向U盘里放一些文件,第三步你使用完之后就要拿走U盘,这里我们就要推出你的U盘,就是我们平时选择弹出;就像上面说的,接口就是一个工具人(服务员),在我们(用户)和系统之间来回跑,帮助我们完成相应的功能;

  • 一定记得接口里面的方法都是抽象方法

接口(interface)的特征

  • 接口中所有的方法都是public abstract ,不可以是private之类的
  • 接口里方法的前面的public abstract 可以部分省略或全部省略,但是你不写它还是抽象方法
  • 接口不可以实例化,要通过实现类来实现该接口,重写该接口里所有的方法,这里和昨天所说的抽象类是一样的,我们还是通过继承的方式,让子类继承该接口,使用上转型变量来实现接口和多态

Interface的相关疑问

  • 当接口里的抽象方法不够子类使用的,我们怎么办? 这个问题我们在继承那里就已经说过,当父类的属性不够用时,我们当然就要在子类中新增方法了,但是这里出现了另外的问题:我们的上转型对象是不能调用子类新增方法的 emm…这很简单,不用上转型就可以了,我们要使用哪个实现类的新增方法,我们就定义哪个类的对象就好了…这里xdm还可以去了解一下下转型变量的使用
  • 接口可以继承接口吗 当然可以,接口可以继承接口,但是这里它也和子类一样,必须要重写父接口的抽象方法
  • 接口可以多继承吗? 可以,注意是多继承,这个多继承是普通类所没有的特点
public interface KeyBoard extends WireKeyBoard,Light{
    //只是我们要注意WireKeyBoard,Light既然都是它的父类,KeyBoard就都重写这两个接口的抽象方法,不然会报错
}
  • 接口中可以定义变量吗? 这是可以的,但是这里的变量其实是常量,就是我们必须给它一个值 并且不能改变
public interface KeyBoard{
    public static final double TYPE = 3.0;
}

这里我们就大概了解了接口是什么,接口就是一个特殊的抽象类,这个Class的所有method都是abstract的,这是我们就可以直接new一个interface而不是class,毕竟interface可以实现class所不具有的多继承哇~~

API的深入理解

API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令。 通俗来说,API就是系统预留一个通道,按照约定对系统进行一些操作,如常见的就是系统的数据进行增删改查。

  • 那API在Java里面具体是什么呢?

就是一些预先定义的method,应用程序接口又称为应用编程接口,是一组定义、程序及协议的集合,通过 API接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。API同时也是一种中间件,为各种不同平台提供数据共享。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的可维护性和可扩展性。

所以API 就是Java预先放在系统中的一些类,方法,我们可以直接使用,而不需要去理解(弄懂)这些类具体怎么实现的,比如Object类,String类,Date类,这还是我们经常使用的,还有很多我们没怎么使用的,until包,lang包好多内容;我们使用就直接调用就好了,知道它可以实现什么功能,比如我们Java入门的时候输入怎么实现

Scanner in = new Scanner(System.in);

这不就是我们直接在使用Scnner类嘛,但是你也许并不知道这个Scanner类是如何实现的,不知道它工作的细节,这就是印证我们刚刚说的API 是一些预先定义的方法,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节

看我们上面简单的一行代码,包含的知识量可是庞大的,类,对象,new,构造方法-----,如果不了解的可以看看我以前的blog

JAVA API的功能

运行Java程序时,虚拟机装载程序的class文件所使用的Java API class文件、所有被装载的class文件(包括从应用程序中和从Java API中提取的)和所有已经装载的动态库(包含本地方法)共同组成了在Java虚拟机上运行的整个程序。

在一个平台能够支持Java程序以前,必须在这个特定平台上明确地实现API的功能。为访问主机上的本地资源,Java API调用了本地方法。由于Java API class文件调用了本地方法,Java程序就不需要再调用它们了。

通过这种方法,Java API class文件为底层主机提供了具有平台无关性、标准接口的Java程序。对Java程序而言,无论平台内部如何,Java API都会有同样的表现和可预测的行为。

正是由于在每个特定的主机平台上明确地实现了Java虚拟机和Java API,因此,Java程序自身就能够成为具有平台无关性的程序。

  • 那你说这就实现了Java的什么特点?

对,就是跨平台性;一次编译,到处运行;这里的API也起了巨大的作用呢;

就是说我们的Java给提供了很多类,接口,抽象类,我们可以直接去参考API文档,然后直接使用就好了
在这里插入图片描述

今天的分享就到这里,今天确实太忙,只得挤出一点点时间来分享这篇blog,日更真难啊~~~爆肝啊~

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:11:30  更:2021-09-14 13:12:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:03:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码