接口有2种:①是程序层面的接口     ②java中用来解决java不能多继承的问题,还有接口可以做到:不用修改实例名和调用,只修改实现类,提到代码复用。

一、接口测试的理解:

首先别人是写的网络接口归我们去通过http请求获取,然后我们在上传请求头时是依据后台写的验证条件决定我们需要不需要上传请求头,但是一般情况下:content-type(请求文件格式)是需要写在headers中的,另外就是token认证(看后台是否需要你登录情况下才能操作,确定是否上传该请求头)。

二、别人写的网络接口供别人调用(网络接口形式):

计算机语言分类有很多,如C、C++、C#、Java、Php、Python等等,她们有各自的特性及擅长的领域,但她们各自又不是全能的。在一个稍微大型一点的项目都会用到多种语言共同完成,那么这些编程语言如何进行通信呢。什么意思呢,就是比如说我Java写的一个方法,其他编程语言要怎么去调用呢?这就是本文要探讨的问题了。

一般来说,方法层面的编程语言通信用的是网络接口形式,只暴露出形参和结果供别人调用。接口一般分为接口定义者和接口调用者,定义者可以规定接收参数的类型及返回形式,而接口调用者则只能完全按照接口定义者规定的参数进行访问。就叫是我们所说的webService(网络服务)。

以前的做法是利用XML作接口格式定义,然后通过Http做通讯和请求,如大名鼎鼎的SOAP,其实现在也是的,只不过现在流行RestFul风格的Rest接口形式,但用的还是XML+HTTP,那这两者有啥区别呢?最大的区别就是SOAP返回的主要是XML格式,有时还需要附带一些辅助文件,而Rest则还可以返回JSON类型的字符串,减少了很多繁乱的XML标签。本文就以Java为例,用她写一个接口,并让其他人去调用,以此来简单展示接口调用是怎么样一个过程。

链接1:

https://blog.csdn.net/kevin_gu6/article/details/82120408?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%88%AB%E4%BA%BA%E5%86%99%E7%9A%84java%E6%8E%A5%E5%8F%A3&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-82120408

链接2:

https://blog.csdn.net/weixin_30535843/article/details/98812359?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159448251319724845022707%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=159448251319724845022707&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~pc_rank_v2-6-98812359.first_rank_ecpm_v3_pc_rank_v2&utm_term=%E5%88%AB%E4%BA%BA%E5%86%99%E7%9A%84java%E6%8E%A5%E5%8F%A3

三、java后台开发中遇到的接口是怎么回事:

java工作中经常说写一个接口,提供一个接口,这个接口是怎么回事?接口不是没有实现的吗?不是应该说写一个方法吗?每次听见写一个接口总感觉很变扭?

回答1:别人要你提供接口肯定是这个接口的实现类也是由你去写呀,只要接口规范,别人可以调用你的写的实现类,也可以调用别人写的实现类。

回答2

题主是没体验到接口的快感,,,

有个例子,,
接口是规范,是规矩,,按规矩办事,就能够统一处理,更方便。

 interface TV{//电视接口,具有看电视的功能void watchTV();
}
class HairTV implements TV{//海尔电视是电视,,那么他就必须具有看电视的功能。public void watchTV(){System.out.println("看电视,用的海尔电视");}
}class Main{//我有个类需要加入看电视的功能TV tv =new Hair();//注意,这里,,类型是TV,,创建的实例是hair电视。。。。。。使用tv实例的一大串代码。
}

假如需求变更了,,,我需要换成乐视电视,,,怎么换?
【不用接口的话】,,,所有调用都得换,,
【用了接口,,只需还一个地方】

 class LeshiTV implements TV{//Leshi电视是电视,,那么他就必须具有看电视的功能。public void watchTV(){System.out.println("看电视,用的Leshi电视");}
}class Main{//我有个类需要加入看电视的功能TV tv =new LeshiTV();//注意,这里,,类型是TV,,创建的实例是LeshiTV。。。。。。只需要修改上面这个创建的实例即可,,调用都不用改,很方便吧,,(学了spring的话,,上面这个实例都不用改了,)
}

这也是面向对象设计原则之一,,,【依赖倒置原则】

回答3:接口既可以是指java语法上的接口,也可以是指程序层面的调用规范(这里的接口是指合作开发,或者系统之间的调用,只要按照你写的规范把请求返回的参数获取到,怎么利用就是别人的事情了,就压根不需要考虑你程序内部怎么实现的了,反正调了你的接口,你就得给我所有的你本身具有的返回值)。后者和语言上的接口没有关系

四:接口实现类似多继承

题目:
通过动物游泳奔跑飞行来模拟实现多个接口,因为这种情况下,我们需要让一个类同时继承多个父类,这件事情在有些编程语言中可以通过多继承的方式来实现,但是JAVA中只支持单继承,一个类只能继承一个父类,但是可以同时实现多个接口,这样也就可以达到类似于多继承的效果

(1)


public class Animal {protected String name;public Animal(String name) {this.name = name;}
}

(2)


public class Fish extends Animal implements ISwimming{public Fish(String name) {super(name);}@Overridepublic void swim() {System.out.println(this.name + "正在用尾巴游泳");}
}

(3)


public class Frog extends Animal implements IRunning, ISwimming {public Frog(String name) {super(name);}@Overridepublic void run() {System.out.println(this.name + "正在往前跳");}@Overridepublic void swim() {System.out.println(this.name + "正在蹬腿游泳");}
}

(4)


public class Cat extends Animal implements IRunning{public Cat(String name) {super(name);}@Overridepublic void run() {System.out.println(this.name + " 正在用四条腿跑步");}
}

(5)


public class Duck extends Animal implements ISwimming, IRunning, IFlying {public Duck(String name) {super(name);}@Overridepublic void fly() {System.out.println(this.name + "正在用翅膀飞");}@Overridepublic void run() {System.out.println(this.name + "正在用两条腿跑");}@Overridepublic void swim() {System.out.println(this.name + "正漂在水上");}
}

(6)


public interface IFlying {void fly();
}

public interface ISwimming {void swim();
}

public interface IRunning {void run();
}

(7)


public class Test {public static void main(String[] args) {Cat cat = new Cat("小猫");walk(cat);Duck duck = new Duck("小鸭");walk(duck);Fish fish = new Fish("小鱼");swim(fish);Frog frog = new Frog("小青蛙");walk(frog);swim(frog);}public static void walk(IRunning running) {System.out.println("我带着伙伴去散步");running.run();}public static void fly(IFlying flying) {System.out.println("我看见伙伴在飞");flying.fly();}public static void swim(ISwimming swimming) {System.out.println("我带着伙伴游泳");swimming.swim();}
}

java接口的一些理解(未完待续)相关推荐

  1. 尚学堂java SE学习笔记(未完待续)

    1.关于递归,一定要注意函数调用顺序! 图1 如上图:在执行f(n-1)+f(n-2)的过程中,先执行f(n-1)一直到f(n-1)有返回值才执行f(n-2). 2.  图2 注意成员变量和局部变量的 ...

  2. Java运行原理研究(未完待续)

    java的介绍和定性 java的优缺点分析 jdk的组成结构 jvm的工作原理 java的跨平台原理 java的编译和运行过程 转载于:https://www.cnblogs.com/guoxiaoq ...

  3. cipher java 安全_Java安全(未完待续)

    加密, 解密 凯撒密码 左右位移 向右位移三位 a-> d b -> e c -> f 凯撒密码--频度分析法 例如:在英文中 e 出现的频率是最高的 将出现最多的字母付给e,总结规 ...

  4. 使用 Sharding-Jdbc 实现分库分表、读写分离(未完待续)

    先贴代码, 回头讲解.未完待续 规划 实现分库分表.读写分离. 准备两张表:svc_order, svc_order_item 结构如下,可以想象成是未实施分库分表之前的数据库结构: CREATE D ...

  5. pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)

    1. SRCNN 1.1. Contribution end-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 ). 指出了超分辨方向上传统方法( spar ...

  6. 性能测试调优篇---未完待续

    性能测试调优一: 1.首先,看下选测交易的整个走向 纯系统内部交易: 选测交易如果是系统内的交易,每一步请求都和系统交互几次,访问了几个数据库,访问了数据库的那几张表?? 该交易走了那几台机器,这几台 ...

  7. 省钱版----查找 IoT 设备TTL线序__未完待续

    作者:仙果 原文来自:省钱版--查找 IoT 设备TTL线序 省钱版----查找 IoT 设备TTL线序__未完待续 缘由 在IoT固件调试分析的过程中,建议首先在IoT设备的板子上焊接调试线,这是能 ...

  8. Spring Boot web开发(未完待续)

    addViewController请求 attention: 想要把网站的图标换掉就在static下放一个 favicon.ico 的图标图片即可 Spring MVC 5.0.5官方文档 stati ...

  9. (未完待续)浅谈微服务以及 常用中间件( zookeeper redis rabbitmq)

    传统的单体框架,已经不满足目前公司战略规划要求,近几年"微服务" 这个字眼,出现的越来越频繁,虽然有过一年多微服务项目经验,也很难把微服务解释清楚,到底何为微服务? Martin ...

  10. Paper之BigGAN:ICLR 2019最新论文《LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS》(未完待续)

    Paper之BigGAN:ICLR 2019最新论文<LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS> ...

最新文章

  1. MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk
  2. python与excel结合-使用Excel和python来做回归分析
  3. python培训班有用吗-比起自学Python,参加Python培训班有什么优势?
  4. Dataset之OttoGroup:OttoGroup数据集的简介、下载、案例应用之详细攻略
  5. Android:Layout_weight的深刻理解
  6. android tv market,安卓市场TV版
  7. ab plc编程软件_AB编程软件及所有组态软件授权及安装教程包含FTViewV11
  8. 第2小节,深入剖析gym环境构建
  9. CUDA C编程权威指南 第八章 多GPU编程
  10. Spark WordCount
  11. pywin32官方说明文档_为什么你应该看官方文档而不是搜索博客文章
  12. 开放源码的.NET 反编译工具 .NET IL调试工具 学习微软中间语言(MSIL)的绝佳工具 Dotnet IL Editor 推荐...
  13. 锂电池 保护板方案 中颖SH367309方案 原理图
  14. mian()方法详细分析(面向对象的体现)
  15. PDF怎么转换成图片?来看这两种好用的方法
  16. Shiro的Subject对象详解
  17. 付出不亚于任何人的努力
  18. VTM1.0代码阅读:CU、PU、TU
  19. suse bios版本_如何检查和更新BIOS版本
  20. PCB电路板3D模型3D渲染思路

热门文章

  1. mysql的定点数_在MySQL中,定点数类型只有DECIMAL类型。
  2. 中国人工智能城市排名榜公布,北京、杭州、深圳居前
  3. 局域网访问提示无法访问检查拼写_win10访问局域网出现“请检查名称的拼写”如何解决...
  4. Google Play Install Referrer API 和 Facebook App Ads Referral 集成
  5. 3D MAX入门篇(2)制作飞船绕山飞行动画
  6. 正三角形c语言编程,三角形 (C语言代码)
  7. Java实现手机号码归属地
  8. TensorFlow1.x最佳实践:Dataset API+Keras Model+TF Train
  9. 疯狂java讲义(李刚)6.2
  10. beyond compare 2 中文乱码问题