Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Klassenvererbung - Übergabe Parent variabel?

Forumthread: Klassenvererbung - Übergabe Parent variabel?

Klassenvererbung - Übergabe Parent variabel?
08.02.2018 10:46:30
Alex
Hallo,
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

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Klassenvererbung - Übergabe Parent variabel?
12.02.2018 15:44:01
mmat
Das hier (in clsGrandChild)
Private cParent As clsChild
macht die Geschichte wohl wenig flexibel. Du kannst das an der Stelle abstrakt mit "Object" deklarieren
AW: Klassenvererbung - Übergabe Parent variabel?
13.02.2018 23:24:28
Alex
Vielen Dank. Das war der entscheidene Tipp. Auf das Object bin ich nicht gekommen
Gruß Alex
Anzeige
gern geschehen (o.w.T.)
14.02.2018 12:22:18
mmat
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige