LabVIEW2020新增了接口类,我今天在测试接口类的时候发现了一个不太正常的现象:
当一个接口类的某个方法设定为动态方法时
只要其他类有和这个方法同名的动态方法,即使不声明继承此接口,仍然可以使用这个类的动态方法。
如上图所示,IO.lvclass未声明继承Can_ReadF64和Can_ReadSTR接口
但是IO.lvclass仍然可以连接Can_ReadF64接口的ReadF64方法,连接后图标自动变成IO.lvclass内“重写的”ReadF64函数。(这有点像多态VI)
另外,根据继承原则,重写的VI应该与被重写的VI输入输出接口完全一致,不然会报错。
在上面这种情况下,即使在IO.lvclass内“重写的”ReadF64函数输入输出与Can_ReadF64接口的ReadF64方法不一样,仍然可以连线。
(确实也有点多态VI的意思)
我想问一下,这个机制是LabVIEW有意为之还是软件Bug,在编程时能否利用这一特性?