写点什么

软件测试 | 编程语言中的 Interface

  • 2023-05-08
    北京
  • 本文字数:1462 字

    阅读完需:约 5 分钟

在面向对象的编程语言中大多数提供了 Interface(接口)的概念。

Java 中的 Interface

接口在 Java 编程语言中是指一个抽象类型,是抽象方法的集合,通常以 interface 来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,虽然编写接口的方式和类很相似,但是他们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

1.为什么使用 Interface?

接口的特点在于它只是定义规范,而不管具体实现,具体实现由接口的实现者完成。

例如,当前有多个主流的数据库厂商(Oracle、SQL Server、DB2 等),Java 定义了调用函数的接口规范(JDBC 即 Java 数据库连接,是一种用于执行 SQL 语句的 JavaAPI,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成),不同的数据库厂商需要根据接口实现自己的数据库调用。对于 Java 程序员来说,在调用不同的数据库时只需要用 JDBC,而并不需要关心每个数据库是怎么实现接口的。

下面通过例子来介绍 Java 中接口的使用。

定义接口

package test.demo;
public interface IAnimal { public String Behavior();//行为方法,描述各种动物的特性}
复制代码

实现动物接口(Dog 类)。

package test.demo;
//类:狗public class Dog implements IAnimal { @Override public String Behavior() { String ActiveTime = "我晚上睡觉,白天活动"; ruturn ActiveTime;}}
复制代码

实现动物接口(Cat 类)

package test.demo;
//类:猫public class Cat implement IAnimal{ @Override public String Behavior() { String ActiveTime = "我白天睡觉,晚上捉老鼠。"; return ActiveTime;}}
复制代码

测试动物接口的具体实现(Dog 类和 Cat)

package test.demo;
public class Test{ public static viod main (String[] args){ //调用dog和cat的行为 Dog dog = new Dog(); Cat cat = new Cat(); System.out.printIn(dog.Behavior()); System.out.printIn(dog.Behavior());
复制代码

需要说明的是,这里的测试并不是测试的接口,因为接口本身只是抽象的定义,并没有可测试性,这里所测试的是已经实现了接口的类。

Python 中的 Zope.interface

在 Python 语言中也有 Interface 的概念,虽然 Python 本身并不提供 Interface 的创建和使用,但是我们可以通过第三方扩展库来使用类似 Interface 的概念,这里选用 Zope.interface 库。

PyPI 地址:https://pypi.python.org/pypi/zope.interface

先来看个普通的例子

class Host(object)       def goodmoring(self, name):      """Say good morning to guests"""      return "Good morning, %s!" % name
if _name_ == '_main_': h = Host() hi = h.goodmorning('zhangsan') print(hi)
复制代码

下面在这个例子的基础上使用 Interface(只使用 Python3)

from zope.interface import Interfacefrom zope.interface.declarations import implementer
#定义接口class IHost(Interface): def goodmorning(self ,host): """Say good morning to host"""

@implementer(IHost) # 继承接口 class Host: def goodmoring(self,guest): """Say good morning to guest""" return "Good morning, %s!" % guest

if _name_ '_main_': p = Host() hi = P.goodmorning('Tom') print(hi)
复制代码

搜索微信公众号:TestingStudio 霍格沃兹的干货都很硬核

用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | 编程语言中的Interface_测试_测吧(北京)科技有限公司_InfoQ写作社区