在LabVIEW中,接口可以被视作是不带有私有数据控件的类,但这种微小的差异使得接口在软件架构中可以实现与类完全不同的目的。具体而言即接口可支持多重继承形式。

接口声明了对象可以扮演的角色,而无需定义如何执行该角色。通过继承接口,类声明其对象实现该角色,然后该类负责指定行为的执行方式。当一个类继承了多个接口时,其对象可被传输至需要完成不同角色的多个软件模块中。

以下项目包括工具(Tool)类,以及几个不同工具的子类。该项目还包括杠杆(Lever)接口。可以看到Tool类有一个控件,该控件定义了该类中的数据,而Lever接口则没有控件,因为接口没有私有数据。类的符号是一个实心的立方体()。接口的符号是立方体的若干面()。接口和类使用相同的文件扩展名 .lvclass

下图显示了Tool类、House Key类和Lever接口之间的继承关系。Tool类和Lever接口均继承自LabVIEW对象。除了拥有自己的方法以及它们各自的父类的方法之外,撬具类(Prying Tool)和平头螺丝刀类(Flathead)还继承自杠杆接口(Lever),因为它们都使用了杠杆原理。继承了杠杆接口(Lever)的方法。由于杠杆(Lever)是接口而不是类,因此这种多重继承是合法的。除LabVIEW对象外,三个不相关的类(撬具、平头螺丝刀、房间钥匙)都源于杠杆。

命名接口的惯例

请使用下列规范为接口命名。接口的名称应具有一定的描述性。

  • 使用形容词或副词描述对象在继承接口时具有的功能。例如,如果接口表示可测量电压的硬件,则将其命名为Can Measure Voltage.lvclass。继承该接口的任何类或接口都可以测量电压。
  • 使用一个名词来描述从接口继承的类的类别。例如,如果接口代表杠杆工具类别,则将其命名为Lever.lvclass。
  • 接口名称避免使用大写字母"I”开头。大多数文本编程语言通常使用前导大写字母"I”来命名接口,以区分接口与类。LabVIEW使用图形化的符号来区分接口与类。此外,LabVIEW开发环境的大多数部分有意地以相同的方式处理接口与类。方法的调用方通常不在乎底层类型是接口还是类。因此,接口名称中不使用"I”,您可以将类转换为接口,将接口转换为类,而无需重构代码。

关于使用接口的范例,请参考下列项目:

  • labview\examples\Object-Oriented Programming\Basic Interfaces\Basic Interfaces.lvproj
  • labview\examples\Object-Oriented Programming\Actors and Interfaces\Actors and Interfaces.lvproj