类的访问权限
公有:类内与类外均可访问,类内访问指在同一个类的方法(函数或VI)的代码中可以进行读写,否则就是类外访问。
私有:类内可以访问,类外不可访问。
保护:可以在类内或子类内访问。
友元:指某个类的属性或方法可以被其他一些指定为友元的方法或类访问到。
LabVIEW里类的属性(数据)只能是私有的,类的方法可以是公有的私有的保护的友元的。
底层的方法尽量设置为私有的,不能够让用户直接使用。
LabVIEW中类是不能嵌套的,但是库可以嵌套。可以在大型项目中划分多个库,库中创建多个类。此时类作为库中的一个成员,也可以设置它是私有或公有。
类的实例化
**类中的属性与方法按照是否必须进行实例化才能调用可以分为静态(静态的属性和方法不需要类实例化就可以被访问)动态(动态的属性和方法只能通过类的某个实例进行访问)**和基于动态分配的模板、基于静态分配的模板完全不同的概念。
LabVIEW类的属性与方法多数是动态的。要添加一个静态方法,在类里添加一个没有类输入控件的那种VI就可以了(相当于利用类的封装特性,把相关VI封装在同一个类里)
一个静态方法
初始化VI很适合封装到类里,没有类的输入但是可以产生类的实例并对其进行初始化。可以在这个VI里设置一下对象初始资源以及打开所需的文件、仪器等。
一个初始化VI
是否需要被子类覆盖
普通函数:LabVIEW中没有对应VI类型的一个东西。别的语言里,普通函数和虚函数都可以被子类继承和覆盖,区别在于普通函数不具备多态(动态绑定)的功能。
虚函数:LabVIEW中的基于动态分配目标VI,表示这个函数或VI是可以被子类继承和重写的,而且有多态功能。
最终函数:LabVIEW中的基于静态分配目标VI,表示这个VI不能被子类中的VI重写,不允许被子类中的函数覆盖。
抽象(纯虚)函数:LabVIEW中设置为必须在子孙类中重写的VI。是一种虚函数(基于动态分配模板的VI),基类只定义了函数的名字和输入输出参数类型 ,并没有编写代码。
抽象类:不能内实例化的类,只能用于被子类继承(把瓷器类设置为一个 抽象类,会强制只能从茶杯类或茶壶类创建瓷器对象,不会创建出一个不存在的类型的瓷器)
最终类:不能被继承的类。最终函数和最终类的使用一般是出于安全考虑(像是做了个用于验证密码的类,为了防止有人把密码验证逻辑在子类中重写之后传给调用者,可以把验证密码类设置为最终类,防止它被继承后在子类里被重写)