VBA 接口(interface)和多态性

标签 vba interface

我正在试验 VBA 的接口(interface),我有点恼火。我读过的关于该主题的大部分内容都建议使用接口(interface)作为实现多态性的一种手段,这似乎在我的一些用例中有效。不幸的是,我遇到了一个问题。

我创建了一个类模块来定义我的接口(interface)iCanvasObject
然后我创建了一个类 cTable实现 iCanvasObject 中的所有方法.到目前为止一切顺利,一切都按预期工作。

当我定义一个特定于 cTable 的方法时会出现此问题,而不是 iCanvasObject 的一部分.即使它的Public我似乎无法从尺寸为 iCanvasObject 的变量访问它, 但实例化为 cTable .

Dim tbl As iCanvasObject
Set tbl = New cTable

它在我可以忍受的 IntelliSense 中不可见,但是当我尝试直接调用该方法时,VBA 提示 Method or data member not found错误。即使这个变量肯定是 cTable 类型

有没有办法让我创建特定于 cTable 的方法?我可以在调用接口(interface)的多态性优势的同时调用吗?换句话说,如果我将变量标注为 iCanvasObject ,我是否严格限制在此界面中定义的内容?

最佳答案

这就是多态性的工作方式。如果您将其声明为 iCanvasObject那么它就是这样,因此它没有 ctable 的任何成员不是来自iCanvasObject , 除非您将其转换为 cTable .

这与您使用 VBA 的事实无关。

关于VBA 接口(interface)和多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23661781/

相关文章:

c# - 为什么不允许在 .NET 中就地实现接口(interface)?

vba - 在mail.body中查找 "carriage return"

excel - 将不同范围添加到图表中的同一系列

java - 为什么实现接口(interface)(使用默认方法)的顺序在 Java 8 中很重要?

c# - HierarchicalDataTemplate.DataType是接口(interface),如何实现2层TreeView

java - 接口(interface)是 "Object"吗?

java - 类扩展抽象类实现接口(interface)

excel - 确定化学式中的原子总数

arrays - 更快地大范围修改(TextToDisplay)超链接的方法

vba - 用于删除 Word 文档中所有重复文本实例的宏