Java接口(interface)的概念及使用
在抽象类中,可以包含一个或多个抽象方法;但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加“抽象”。接口使用 interface 关键字来声明,可以看做是一种特殊的抽象类,可以指定一个类必须做什么,而不是规定它如何去做。现实中也有很多接口的实例,比如说串口电脑硬盘,Serial ATA委员会指定了Serial ATA 2.0规范,这种规范就是接口。Serial ATA委员会不负责生产硬盘,只是指定通用的规范。希捷、日立、三星等生产厂家会按照规范生产符合接口的硬盘,这些硬盘就可以实现通用化,如果正在用一块160G日立的串口硬盘,现在要升级了,可以购买一块320G的希捷串口硬盘,安装上去就可以继续使用了。下面的代码可以模拟Serial ATA委员会定义以下串口硬盘接口:
注意:接口中声明的成员变量默认都是 public static final 的,必须显示的初始化。因而在常量声明时可以省略这些修饰符。接口是若干常量和抽象方法的集合,目前看来和抽象类差不多。确实如此,接口本就是从抽象类中演化而来的,因而除特别规定,接口享有和类同样的“待遇”。比如,源程序中可以定义多个类或接口,但最多只能有一个public 的类或接口,如果有则源文件必须取和public的类和接口相同的名字。和类的继承格式一样,接口之间也可以继承,子接口可以继承父接口中的常量和抽象方法并添加新的抽象方法等。但接口有其自身的一些特性,归纳如下。1) 接口中只能定义抽象方法,这些方法默认为 public abstract 的,因而在声明方法时可以省略这些修饰符。试图在接口中定义实例变量、非抽象的实例方法及静态方法,都是非法的。例如:
3) 接口中没有构造方法,不能被实例化。4) 一个接口不实现另一个接口,但可以继承多个其他接口。接口的多继承特点弥补了类的单继承。例如:
大型项目开发中,可能需要从继承链的中间插入一个类,让它的子类具备某些功能而不影响它们的父类。例如 A -> B -> C -> D -> E,A 是祖先类,如果需要为C、D、E类添加某些通用的功能,最简单的方法是让C类再继承另外一个类。但是问题来了,Java 是一种单继承的语言,不能再让C继承另外一个父类了,只到移动到继承链的最顶端,让A再继承一个父类。这样一来,对C、D、E类的修改,影响到了整个继承链,不具备可插入性的设计。接口是可插入性的保证。在一个继承链中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何父类。此类将不得不实现这个接口所规定的方法,而子类可以从此类自动继承这些方法,这时候,这些子类具有了可插入性。我们关心的不是哪一个具体的类,而是这个类是否实现了我们需要的接口。接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。接口在面向对象的 Java 程序设计中占有举足轻重的地位。事实上在设计阶段最重要的任务之一就是设计出各部分的接口,然后通过接口的组合,形成程序的基本框架结构。
接口的使用与类的使用有些不同。在需要使用类的地方,会直接使用new关键字来构建一个类的实例,但接口不可以这样使用,因为接口不能直接使用 new 关键字来构建实例。接口必须通过类来实现(implements)它的抽象方法,然后再实例化类。类实现接口的关键字为implements。如果一个类不能实现该接口的所有抽象方法,那么这个类必须被定义为抽象方法。不允许创建接口的实例,但允许定义接口类型的引用变量,该变量指向了实现接口的类的实例。一个类只能继承一个父类,但却可以实现多个接口。实现接口的格式如下:修饰符 class 类名 extends 父类 implements 多个接口 {实现方法}请看下面的例子:
接口作为引用类型来使用,任何实现该接口的类的实例都可以存储在该接口类型的变量中,通过这些变量可以访问类中所实现的接口中的方法,Java 运行时系统会动态地确定应该使用哪个类中的方法,实际上是调用相应的实现类的方法。示例如下:
运行结果:now in B大家看到接口可以作为一个类型来使用,把接口作为方法的参数和返回类型。
最后,我自己是一名从事了多年开发的JAVA老程序员,今年年初我整理了一份最适合初学者学习的java学习干货,可以送给每一位喜欢java的小伙伴,想要获取的可以关注我的头条号并在后台私信我:交流,即可免费获取。
从0开始搭建开发自己的代码测试框架-接口java篇
多数人了解测试自动化后,大多理解和知道什么是自动化,也知道为什么要做自动化,同样知道自动化的目的是什么。但是不知道对于这个自动化,怎样开始做,都用到哪些,怎么能简单快速的从零开始。
也有部分人接触到使用自动化测试时是使用别人已经搭建好的框架,各种封装,各种类,各种规则,被弄得云里雾里,不好用,也不适用。也想自己能开发搭建一套适用,好用,简单上手的测试框架。
其实搭建一套基础测试框架不复杂,很简单。当然做简单,做好难。后面的教程就是教编程有基础,但对自动化测试无从下嘴的小白如何从0到1。简单,快速的搭建自己的框架。里面用到的基本工具都是比较简单,好用的。
框架也需要通用性,先从接口开始,之后的Web,app 可以在这基础上扩展。
Java接口自动化,app自动化,web自动化都需要做到以下的前提需要对java语言有了解,赋值,对象,逻辑运算 基本掌握。
1. 选取请求发送和测试工具包
推荐使用 Retrofit + Junit4 组合
Retrofit 相比java 自带的HTTPClient 使用方便,工具包较齐全。
可以指定接收数据后转换成想要的数据格式,比如pojo对象,json,String 等,这样拿到接口的返回数据后可以方便的提取需要验证的字段数值。
Junit 最高本版是5,相比4来说 没有本质上的使用区别,增加了不同的工具包,使用过程中,很多用不上,Junit4足够用了。
编辑器建议用Idea 社区版 使用中足够,如果想要更多功能可以花钱买专业版本
注意:环境需要安装配置Java和Maven
开始建立工程,搭建基本功能如图操作,Name 填写项目名称,build system 选取maven,jdk 选取 1.8版本
建立成功后,等待编辑器右下角的进度全部处理完成后,得到如下项目
打开 pom文件
添加配置如下图:
然后在src/test/目录下新建目录service,再建立用例文件 TestService.java 如图:
然后在src/test/目录下新建目录cases,再建立用例文件 XXX.java,如图:
之后可以通过把鼠标放到 Request_01Test()上鼠标右键运行就可以发送并接收接口的数据了。
执行的结果
2. 字段断言
断言方法很多,常用比如:1、判断字符串内是否包含某个字符,2、把数据转成对象,3、把数据转成json
这里介绍这三种
一,使用文本接收数据并断言,通过正则或contains 判断数据
二、使用java对象接收并断言,通过get方法取值并判断
三,使用json接收数据并断言,通过json的 getJSONObject 、getJSONArray等方法取值判断
具体见下图:
在Service中添加对应的接收类型
建立对应的java类
可以通过已有的json 去工具网站生成
之后用例中可以做断言判断
以上用到的retrofit 工具,
实际用到的请求 有GET 、POST 、PUT、DELETE,这些请求类型和传参方法可以自行到官网学习使用方法。
请求发送的代码部分可以自行封装,以便使用起来简化步骤
做完以上就完成了基本的接口框架搭建
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。