Ich verwende eine Schnittstelle, um sicherzustellen, dass einige ähnliche Klassen einige obligatorische Methoden (Subs / Funktionen) implementieren.
Beispiel:
C1 und C2 benötigen ebenfalls genau die gleichen Methoden, zum Beispiel die Methoden SM1 und SM2.
Um die Wiederholung von SM1 und SM2 zu vermeiden, möchte ich eine abstrakte Klasse AC definieren:
welches um C1 und C2 erweitert würde
Diese Lösung ist zwar in Java möglich, aber ich finde keine Dokumentation, um das in VBA zu machen. (VB.Net scheint abstrakte Klassen mit dem Schlüsselwort MustInherit zuzulassen.)
Jede Bestätigung, die in VBA möglich ist oder nicht?
Es gibt keine Vererbung in VBA.
Sie können eine Schnittstelle definieren, und Sie können sie in einer Klasse implementieren, indem Sie das Schlüsselwort Implements
verwenden. Wenn Sie jedoch eine gemeinsam von einer Basisklasse vordefinierte Funktionalität wünschen, müssen Sie den Kopier-Einfüge-Ansatz verwenden.
Weiterführende Literatur:
Verwendung der Tools in Excel VBA
Wie vergleichende Methoden zwischen Klassenobjekt-Modulen in VBA in ähnlicher Weise wie VB.NET verwendet werden?
Sie könnten Semi-Decorator :-) Pattern in VBA implementieren. Sagen wir, wir haben eine Basisklasse und zwei untergeordnete Klassen. Wenn Sie das Schlüsselwort Implements in untergeordneten Klassen verwenden, wird sichergestellt, dass untergeordnete Klassen dieselbe Schnittstelle wie die Basisklasse haben und gleichzeitig eine private Instanz der Basisklasse in jeder untergeordneten Klasse deklarieren und Aufrufe von untergeordneten in die Basisklasse umleiten.
Hinweis: Basisklasse ist hier normale Klasse, Sie können immer noch Instanzen davon erstellen (also keine echte abstrakte Klasse).
Beispiel:
%Vor%
Tags und Links vba excel-vba interface abstract-class