Klassenvererbung - Übergabe Parent variabel?
08.02.2018 10:46:30
Alex
ich beschäftige mich aktuell mit der Programmierung von Klassen in VBA und möchte gerne eine Struktur in der Art "Parent.Child1.GrandChild" erstellen.
Hierzu habe ich eine Klasse clsParent, clsChild1 und clsGrandChild erstellt. Dies funktioniert auch super.
Nun möchte ich die Klasse clsGrandChild aber auch für eine zweite Child-Klasse (clsChild2) verwenden, welche andere Funktionen und Prozeduren beinhaltet als clsChild1.
Jedoch muss ich zur initialisierung der Klasse clsGrandChild die Eltern-Klasse im Code fest hinterlegen und da ich die Klasse nicht doppelt schreiben möchte, würde ich gerne wissen ob es möglich ist diese variabel oder undefiniert zu erstellen.
Ist so etwas möglich? Kann ich die GrandChild Klasse so variabel definieren, dass ich beiden Child-Klassen auf diese zuzugreifen kann?
Hier mal der Code wie ich es aktuell aufgebaut habe (kurzform):
clsParent:
Option Explicit
Public Child1 As clsChild1
Private Sub Class_Initialize()
Set Child1 = New clsChild1
Set Child1.Parent = Me
set Child2 = new clsChild2
set Child2.Parent = me
End Sub
clsChild1:
Option Explicit
Private cParent As clsParent
Private Sub Class_Initialize()
Set GrandChild = New clsGrandChild
Set GrandChild.Parent = Me
End Sub
Public Property Set Parent(objParent As clsParent)
If cParent Is Nothing Then
Set cParent = objParent
End If
End Property
Public Property Get Parent() As clsParent
Set Parent = cParent
End Property
clsChild2:
Option Explicit
Private cParent As clsParent
Private Sub Class_Initialize()
Set GrandChild = New clsGrandChild
Set GrandChild.Parent = Me
End Sub
Public Property Set Parent(objParent As clsParent)
If cParent Is Nothing Then
Set cParent = objParent
End If
End Property
Public Property Get Parent() As clsParent
Set Parent = cParent
End Property
clsGrandChild
Option Explicit
Private cParent As clsChild
Public Property Set Parent(objParent As clsChild)
If cParent Is Nothing Then
Set cParent = objParent
End If
End Property
Public Property Get Parent() As clsChild
Set Parent = cParent
End Property