Excel VBA实现/继承
我很难理解和使用Excel VBA实现/继承,excel,vba,interface,Excel,Vba,Interface,我很难理解和使用实现,如果VBA不支持继承,我看不出这有什么用处 我正在测试下面的代码,不断收到错误: 编译错误: 对象模块需要为接口“~”实现“~” 接口:itTransmission Option Explicit Public pVENDOR As String Public Property Get VENDOR() As String End Property Public Property Let VENDOR(ByVal value As String) End Propert
实现
,如果VBA不支持继承,我看不出这有什么用处
我正在测试下面的代码,不断收到错误:
编译错误:
对象模块需要为接口“~”实现“~”
接口:itTransmission
Option Explicit
Public pVENDOR As String
Public Property Get VENDOR() As String
End Property
Public Property Let VENDOR(ByVal value As String)
End Property
基类:cASN
Option Explicit
Implements ITransmission
Private Property Let ITransmission_pVENDOR(ByVal value As String)
pVENDOR = value
End Property
Private Property Get ITransmission_pVENDOR() As String
ITransmission_pVENDOR = pVENDOR
End Property
单元测试方法:munitesting
Private Sub Test_cASN()
Dim foo As cASN
Set foo = New cASN
foo.VENDOR = "Test"
End Sub
实现起来还是很新的,这是我想学习的东西,我已经做了大量的研究
问题1:
为什么我在尝试进行单元测试时会收到错误消息
问题2:
如果不支持继承,这里真正的好处是什么?您实现的是
pVENDOR
,而不是两个供应商
属性
我假设您希望接口是VENDOR
属性的get/let
您的Public pVENDOR As String
看起来像此属性的支持字段,因为接口不能包含实现,因此不需要它
界面应如下所示:
Public Property Get VENDOR() As String
End Property
Public Property Let VENDOR(ByVal value As String)
End Property
然后,当您实施它时:
Implements ITransmission
Private pVENDOR As String '// local implementation detail
Public Property Let ITransmission_VENDOR(ByVal value As String)
pVENDOR = value
End Property
Public Property Get ITransmission_VENDOR() As String
ITransmission_VENDOR = pVENDOR
End Property
并测试:
Private Sub Test_cASN()
Dim foo As cASN
Set foo = New cASN
foo.ITransmission_VENDOR = "Test"
End Sub
这里真正的好处是什么
这本书可能会重复,非常感谢!我也发现了这个。。。这也是继承的最佳解决方案吗?另外,为了说明这一点。。。据我所知,
接口
本质上是一个类必须遵循的模板?因此,如果我有两个实现itTransmission
接口的唯一类,那么这两个类必须包含这些Get/Let属性,这正是我试图实现的。是的。。。必须实现接口类的所有方法。