首页 > 解决方案 > 如何覆盖 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 中没有继承。如果是这样-您能否建议-如何使用构图来做到这一点。

标签: 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代码。


推荐阅读