让一个类成为另一个类的属性

‘一、建立子类 CAddress.cls
Private m_Street As String
Private m_City As String

Public Property Get Street() As String
Street = m_Street
End Property

Public Property Let Street(ByVal sStreet As String)
m_Street = sStreet
End Property

Public Property Get City() As String
City = m_City
End Property

Public Property Let City(ByVal sCity As String)
m_City = sCity
End Property

‘ 二、建立父类 CPerson.cls
Private m_Address As CAddress ‘ 声明 CAddress 类型的私有变量

‘ 自动初始化 CAddress 实例
Private Sub Class_Initialize()
Set m_Address = New CAddress
End Sub

‘ 清理资源
Private Sub Class_Terminate()
Set m_Address = Nothing
End Sub

‘ 通过 Property Get 公开 CAddress 实例
Public Property Get Address() As CAddress
Set Address = m_Address
End Property

‘ 可选:允许外部设置 CAddress 实例
Public Property Set Address(ByVal objAddress As CAddress)
Set m_Address = objAddress
End Property

‘ 三、在窗体或模块中使用:
Dim person As CPerson
Set person = New CPerson

‘ 设置地址属性
With person.Address
.Street = “123 Main St”
.City = “New York”
End With

‘ 读取地址属性
MsgBox “地址:” & person.Address.Street & “, ” & person.Address.City

‘四、注意事项

Set person.Address = New CAddress ‘ 正确
person.Address = New CAddress ‘ 错误(缺少 Set)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注