什么是接口与API接口!

今天有个朋友问我什么接口?你们平时都说在写接口,写的是什么鬼啊?我一开始就想,咦小陈同学怎么突然了解编程接口了,不过听到他后一个提问我知道原来他想的是API接口,不过被我主观意识习惯想成了编程定义上的接口。

所以就突发其想,想写篇东西说明一下编程定义的接口,与API接口含义。

为了区分统一两个概念,下面全文接口是指编程定义的接口,API是指API接口。

一、什么是接口?

1. 接口的概念
给一个定义,接口是指定一组函数成员而不实现成员的引用类型,其他类型-类和结构可以实现接口。
接口是对强类型的面向对象编程语言特有东西,如C#,Java,通俗地说它的出现就是对这些强类型语言定义一个标准的入口然后供后续子孙继承使用。

结合生活再通俗一点说,就类似现在现在手机的充电口有Micro USB接口USB Type C接口以及IOS系统手机的Lightning接口,这三种接口就是一个接口定义,规定了这个充电头的形状,大小,然后怎么实现充电我不管了,不管你之前做成普通的充电,还是快充,也不管你给什么手机品牌,什么型号的手机使用。

2.接口的特点
C#接口特点1:都是“虚的”不能被实例化;
C#接口特点2:正因为接口是虚的,所以接口内的索引,属性,时间等只能有声明,而不能在接口内实现,具体如何实现是派生接口或者派生类的事;
C#接口特点3:都具有模板的性质,如果一个接口或者类从某一个接口继承,它将自动具有被集成者的特征(包括索引,属性,函数,实践等);
C#接口特点4:接口支持多重继承,而C#中,类之支持单一继承,接口实际表示的是一种承载能力。

3.接口定义与实现
一个接口可以从零或多个接口继承,那些被称为这个接口的显式基接口。当一个接口有比零多的显式基接口时,那么在接口的定义中的形式为,接口标识符后面跟着由一个冒号":"和一个用逗号","分开的基接口标识符列表。
一个类继承接口,那么就必须实现它的所有基接口定义的成员。
看下面代码例子:

interface IAnimal  
{   
   void Alive ( ) ;  
} 

interface IFlyingAnimals:IAnimal
{
  //定义一个索引
  string this[int index] { get; set; }
  //定义一个属性
  bool HasFeather { get; set;}
  //定义一个事件
 event EventHandler Changed;
  //定义一个方法
  bool CanFly(string s);
}
//支持多继承
interface IBird:IAnimal,IFlyingAnimals
{
  void CanCatchFish();
}

public class Animal:IAnimal
{
  public void Alive(){..实现内容..}
}

public class Bird:IBrid
{
  private void Alive ( ) ;  
  //实现一个索引
  public string this[int index] { get; set; }
  //实现一个属性
  public bool HasFeather { get; set;}
  //实现一个事件
 public event EventHandler Changed {..实现内容..};
  //实现一个方法
  public bool CanFly(string s){..实现内容..};
  public void CanCatchFish(){..实现内容..};
}
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn999】

二、什么是API接口

API:Application Program Interface,API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令。

通俗来说,API就是系统预留一个通道,按照约定对系统进行一些操作,如常见的就是系统的数据进行增删改查。

可能上面这些说法如果非程序员看还是会一头雾水,那么再举个生活例子,假如现在银行就是一个应用系统,我们想去银行拿一笔钱,那么我们需要做些什么操作:

  1. 去银行
  2. 到银行仓库拿一笔钱
  3. 把这笔业务写到记帐本上
  4. 离开银行

那么,显然这存在着问题:

想开开仓库门需要废很大力气,并不是所有的人都能打开,还有些人不识字不会记账。
在这个模式下,我们假定所有人都是诚实的,显然这并不成立。(说不定哪一个人拿了10000块钱记账的时候写了100块)。
这时你遇到麻烦了。

那我们应该怎么解决这个问题呢?

这个时候,我们其实只需要找一个专业的银行员工小娜来负责这些操作就好,建一个柜台将仓库和记账本和顾客分开,这样顾客就不需要再去管仓库和记账本了。想存钱的话直接找小娜就行。

这种模式下,要是有人想取钱,他们必须:

  1. 去银行
  2. 告诉小娜我是 MMM 我想要取¥¥¥。
  3. 小娜打开仓库把钱拿出来
  4. 小娜把业务(transaction )记录好
  5. 告诉你业务办好了
  6. 顾客离开银行

现在不会发生打不开仓库门或者是记错账的情况了,你觉得很满意。

这个银行员工小娜就是相当于一个API接口,我们雇一个收纳员帮顾客解决了开仓门,放钱,记账这一系列繁琐的过程。这大大节省了顾客的时间,同时提高了银行的效率。同理,如果我们将操作的具体实施步骤抽象化,这将会大大降低开发人员的负担(去记忆所有的步骤花费的力气),从而大大提高了效率。

API 应用范围很广:从操作系统中简单的 fork() 到我们接触的百度地图API,天气API,这些 API 都大大简化了程序员的工作,不用重复造轮子。

我们使用API需要遵循API的协议,否则就会报错或得不到想要的效果,就好比你在银行的存款明明只是100块,但你偏要去取1000块,这样就是遵循协议约定了。

在 API 术语中,协议 是规定了各部分之间如何进行交流的一系列规则的集合。各部分之间想要完成交互必须理解并且遵守同一个协议。

当我们为自己系统设计API的时候,一般来说我们是需要为API建立防火墙,在保护您的资源免受滥用的同时允许合法请求通过。
防火墙原则:

  1. API 能确认所有的操作都是合法的。
  2. 在发生错误的时候 API 会根据错误报告机制发出指示,减轻开发人员的负担。
  3. API中内置授权和访问控制,以确保只有授权人员才能访问特定数据。
  4. 我们可以实施速率限制来控制服务器资源的使用,以确保用户不会滥用服务。

三、总结

所以,接口与API以作用来说,就是定义一个规范,接口属于代码层次的定义,而API就是实现层次来定义,使工作更有效率,重复使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/244830.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DHCP--自动获取IP地址

目录 一、了解DHCP服务 1、概念 2、使用DHCP的好处 3、DHCP的分配方式 二、DHCP的租约过程 1、客户机请求IP地址 2、服务器响应 3、客户机选择IP地址 4、服务器确定租约 5、服务器租约期限到了之后续期问题 6、总结 三、部署DHCP实验 1、项目要求 2、规划设计 …

Linux服务器配置免密SSH

在当今互联网时代,远程工作和网络安全已成为信息技术领域的热点话题。无论是管理远程服务器、维护网络设备还是简单地从家中连接到办公室,安全始终是首要考虑的因素。这就是为什么 SSH(Secure Shell)成为了网络专业人士的首选工具…

【送书活动五期】Go语言开发规范指南

今天和一个小伙伴偶尔聊了两句,聊到现在工作的开发语言,大学时接触的第一个语言应该是html,系统且简单的学习了前端语言,之后伴随着学校的课程,C、C#、Java都有涉及,然后就一直已Java为主了,也是…

动手学深度学习-注意力机制

10.1注意力提示 自主性注意力机制 有意识的注意力机制。非自主性注意力机制 无意识的注意力机制。 小结: 人类的注意力是有限的,有价值和稀缺的资源。受试者使用非自主性和自主性提示有选择的引导注意力,前者基于突出性,后者则依赖于意识。…

浏览器js中添加日志断点

一、需求 本地调试时,可以直接代码里使用console.log直接调试; 代码已更新到服务器,不想要提交代码,如何通过添加console.log调试呢 二、实现 使用浏览器添加日志断点的方式,当然vue这种打包的不可行哦 设置完成后…

【深度学习】AlexNet网络实现猫狗分类

【深度学习】AlexNet网络实现猫狗分类 AlexNet简介 AlexNet是一种卷积神经网络(Convolutional Neural Network,CNN)模型,它在2012年的ImageNet图像分类挑战赛中取得了重大突破,引发了深度学习在计算机视觉领域的热潮…

严世芸龟法养生经

文章目录 严世芸理念荤素搭配,不偏嗜动静结合心平气和 龟息法 严世芸 严世芸,出生于1940年,现任上海中医药大学的主任医师,教授。他父亲是近代上海有名的中医,他又是著名医家张伯臾的亲传弟子。 从小就在父亲诊室里长…

阿里云国际版CDN网页打不开、页面报错该如何解决?

如果在使用CDN过程中,遇到了网页打不开、页面报错等问题时,您可以通过自助诊断工具来进行诊断。诊断工具会告知本次诊断结果,您可以根据结果来调整CDN配置或提交工单进行咨询。 使用场景 主要支持以下情况: 域名访问异常&#x…

后端idea提交代码到主分支

1.先从本地提交到远程本地orgin:保留一份,避免后面提交出错,无法回退 2.提取主分支代码:更新比人提交的部分;右击项目-》git-》提取 3.把主分支代码合并到本地中:避免最后推送起冲突 4.最后提交代码:推…

JVM第10章-前端编译与优化

Javac编译器 从Javac代码的总体结构来看,编译过程大致可以分为1个准备过程和3个处理过程 1)准备过程:初始化插入式注解处理器。 2)解析与填充符号表过程,包括: 词法、语法分析。将源代码的字符流转变为标记…

云计算与大数据技术应用知识及案列

云计算与大数据技术应用知识及案列 简述什么是云计算? 答:云计算是一种动态扩展的计算模式,通过网络将虚拟化的资源作为服务提供;云计算是一种无处不在的、便捷的通过互联网访问一个可定制的IT资源(IT资源包括网络、服…

c/c++ 文件操作(2)

文件操作读和写 顺序读写 1、fgetc、fputc 函数功能fgetc字符输入函数----->对应打开方式是 “r”fputc字符输出函数-----> 对应打开方式是 “w” 2、fgets、fputs 函数功能fgets文本行输入函数------> 对应打开方式是"r"fputs文本行输出函数------>…

mybatis动态SQL-foreach

1、建库建表 create database mybatis-example; use mybatis-example; create table emp (empNo varchar(40),empName varchar(100),sal int,deptno varchar(10) ); insert into emp values(e001,张三,8000,d001); insert into emp values(e002,李四,9000,d001); insert into…

SD-WAN解决外贸企业网络问题

为了获取全球客户,占领更多的市场,越来越多的外贸企业出现。外贸企业在发展业务的过程中会遇到很多困难,海外网络访问问题就是其中之一。目前该问题主要有三种解决方案:VPN、MPLS专线以及SD-WAN专线。 VPN通过在公网上面建立专用网…

windows 服务器 怎么部署python 程序

一、要在 Windows 服务器上部署 Python 程序,您需要遵循以下步骤: 安装 Python:首先,在 Windows 服务器上安装 Python。您可以从官方网站(https://www.python.org/downloads/windows/)下载最新的 Python 安…

Spring 6(一)【Spring 入门】

前言 好久没有写博客了,最近刚忙完考试,眼下又是英语四六级。Flink 按说应该是大数据学习的主线任务,但是长时间学一门技术还是心累的。正好之前对 Java 注解有了进一步的熟悉,一直想着熟悉巩固。所以,今天开始就来深入…

Feign-实现Feign最佳实践

目录 一、实现最佳实践的步骤(方式二) 1.1 首先创建一个module,命名为feign-api,然后引入feign的starter依赖 1.2.将order-service中编写的UserClient、User、DefaultFeignConfiguration都复制到feign-api项目 1.3.在order-se…

微软免费开发隧道(内网穿透)服务

软件下载 Windows x64:https://aka.ms/TunnelsCliDownload/win-x64 macOS (arm64):https://aka.ms/TunnelsCliDownload/osx-arm64-zip macOS (x64):https://aka.ms/TunnelsCliDownload/osx-x64-zip Linux x64:https://aka.ms/…

数据结构和算法(全)

1.了解数据结构和算法 1.1 二分查找 二分查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,然后比较目标值与中间元素的大小关系,从而确定应该在左半部分还是右半部分继续查找。这个…

P20类神经网络训练不起来怎么办?- 批次和动量

什么是batchsmall batch 和 large batch 的比较 : large batch 更快,small batch 在训练集和测试集上效果效果更好动量的意义和作用: 类似于物理上多了一点惯性,防止困在鞍点。 动量是之前所有梯度的加权和。 1. batch 是什么 …