接口有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:
链接2:
三、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);
}
@Override
public void swim() {
System.out.println(this.name + "正在用尾巴游泳");
}
}
(3)
public class Frog extends Animal implements IRunning, ISwimming {
public Frog(String name) {
super(name);
}
@Override
public void run() {
System.out.println(this.name + "正在往前跳");
}
@Override
public void swim() {
System.out.println(this.name + "正在蹬腿游泳");
}
}
(4)
public class Cat extends Animal implements IRunning{
public Cat(String name) {
super(name);
}
@Override
public void run() {
System.out.println(this.name + " 正在用四条腿跑步");
}
}
(5)
public class Duck extends Animal implements ISwimming, IRunning, IFlying {
public Duck(String name) {
super(name);
}
@Override
public void fly() {
System.out.println(this.name + "正在用翅膀飞");
}
@Override
public void run() {
System.out.println(this.name + "正在用两条腿跑");
}
@Override
public 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();
}
}