vba - 如何覆盖 VBA 中的类方法?
问题描述
我有以下三个类模块:
界面:
Private Sub subCall()
End Sub
Public Sub mainCall()
End Sub
家长:
Implements interface
Private Sub interface_subCall()
Debug.Print "sub call"
End Sub
Public Sub interface_mainCall()
interface_subCall
Debug.Print "main call"
End Sub
孩子:
Implements interface
Public p As New parent
Private Sub interface_subCall()
Debug.Print "child sub call"
End Sub
Public Sub interface_mainCall()
p.interface_mainCall
End Sub
我想从父级继承子级并覆盖interface_subCall()
,以便在我调用时interface_mainCall()
- 调用继承的方法(不是父级)。
我试过这段代码:
Dim c As New child
c.interface_mainCall
但它正在调用父母的interface_subCall
- 打印“子调用”而不是“子子调用”。
据我了解 - VBA 中没有继承。如果是这样-您能否建议-如何使用构图来做到这一点。
解决方案
我认为以下方法是最好的。
子类模块:
Public Sub subCall()
Debug.Print "child sub call"
End Sub
父类模块:
Public Sub subCall()
Debug.Print "sub call"
End Sub
主类模块:
Public Sub mainCall(child)
child.subCall
End Sub
现在我可以将child
/parent
作为参数传递给main
:
Dim c As New child
Dim m As New main
m.mainCall c
Dim p As New parent
m.mainCall p
所以我可以避免重复main
代码。
推荐阅读
- javascript - 更新类 s7sdk.image.FlyoutZoomView 的图像
- rest - 如何通过 Delphi 10.1 将 CSV 文件发送到 REST 控制器(多部分表单)
- encryption - 在linux中加密时,解密的xml包含无效字符
- python - 如何将图片添加到数据表中?
- html - HTML - 中心卡片
- sql - 如何通过带有图像的sql发送消息
- tableau-api - 在 Tableau 中计算月末
- hibernate - JPA/Hibernate - 使用 @SecondaryTable 的混合继承策略导致主键冲突
- django - 用户如何将文件上传到 Django 模型中?
- css - Nuxtjs:Scss 部分未导入页面