VBA中class1如何实现继承interface1的interface2?是否可行?
VBA接口间接实现的解决方案
这个需求是可行的,调整class1.cls的代码写法即可解决问题,正确实现方式如下:
正确的class1.cls代码
Implements interface2 Public Sub interface1_X() ' 在这里编写方法的具体实现逻辑 End Sub
为什么之前的写法无效?
VBA的接口实现规则是:当一个类(interface2)实现了另一个接口(interface1),那么这个类作为接口被其他类(class1)实现时,要求实现的是原始接口的成员,而非叠加中间类名称的成员名。
interface2通过Implements interface1实现接口后,它暴露给外部的接口成员依然是interface1定义的X方法,对应到实现类里的规范方法名是interface1_X,而非interface2_interface1_X。VBA编译器只会检查是否实现了原始接口的成员,所以之前带双重前缀的写法会被判定为未完成接口实现。
内容的提问来源于stack exchange,提问作者hendrik
相关产品推荐
相关产品推荐

