Har*_*don 4 polymorphism vba interface
我正在研究excel-vba中的一个项目,其中有许多类用于查询来自各种来源的数据.由于这些类是相似的,我试图确定是否使用公共接口并使用该Implements语句对我来说是一个可行的选项.我对OOP一般都是新手(尽管我试图用非VBA语言学习),而且我知道VBA中的OOP还有很多不足之处.
我一直在阅读的信息基本上表明你设置了我们将要调用的接口类IBaseInfo:
Public Property Let LocationData(ByRef locDATA As udtLocData)
End Property
Public Property Let ReferenceDate(ByVal dteDATE As Date)
End Property
Run Code Online (Sandbox Code Playgroud)
然后你实际IBaseInfo在你的课程中实现,我们将调用clsRate5pt:
Implements IBaseInfo
Private Property Let IBaseInfo_LocationData(Byref RHS As udtLocData)
End Property
Private Property Let IBaseInfo_ReferenceDate(ByVal RHS As Date)
End Property
Run Code Online (Sandbox Code Playgroud)
我感到困惑的是我如何从模块中的对象级别实际访问属性.我从msdn上的VBA多态性的引用得到的是我需要实际声明一个类型的变量IBaseInfo,将它设置为类型的对象clsRate5pt并通过该变量访问属性.如:
Sub TestIFace()
Dim o5PT As clsRate5Pt
Dim oInfo As IBaseInfo
Set o5PT = New clsRate5Pt
Set oInfo = o5PT
oInfo.LocationData = '// Some location Data
oInfo.ReferenceDate = '// Some Reference Date
End Sub
Run Code Online (Sandbox Code Playgroud)
有没有办法为vba中的一组类设置一组通用接口?是Implements走的路,如果是的话,我做错了什么?
通过不同的对象访问属性似乎是违反直觉的.如果clsRate5pt是"实现"接口,是不是应该有办法通过访问这些属性clsRate5pt?
VBA不支持继承("是一个")但支持组合("有一个"),所以你可以在这种情况下使用这种方法:
例如:类"clsSettings"具有公共属性以及要在其他类中实现的任何必需属性值检查.
然后,您的其他类具有"设置"的实例,可以将其公开为:
objRate5pct.Settings.LocationData
objRate5pct.Settings.ReferenceDate
Run Code Online (Sandbox Code Playgroud)