sposobem by zrobić w VBA mieć zawierać wystąpienie B, jak również o realizować interfejs B, a następnie przekazanie połączenia do interfejsu komunikatów B od A do wewnętrznej B.
ten jest stare rzeczy, ale zobacz Visual Studio 6.0 programisty przewodnik:
http://msdn.microsoft.com/en-us/library/aa716285(VS.60).aspx
jest rozdział o "wielu (Inter) Faces of Code ponowne wykorzystanie", która opisuje tę konwencję:
http://msdn.microsoft.com/en-us/library/aa240846(v=VS.60).aspx
Sposób MS opisuje to jest:
Oprócz realizacji abstrakcyjnych interfejsy, można ponownie użyć kodu przez wdrażaniu interfejs z zwykłej klasie, a następnie selektywnie delegowanie do ukryty wystąpienie klasy .
Oznacza to, że dziedziczenie wdrażania wymaga wielu jawnych metod delegowania. Podtytuł nawet rozdział: "Czy to nie jest nudne?". Jeszcze inny powód, dla którego OOP w VBA jest PITA (TM) ...
EDIT, które nie mieszczą się w komentarzu:
odpowiedzieć na pytanie postawione pan w komentarzu, dobrze, jest typu A a B. Kiedy tworzysz interfejs A narzędzia B, zasadniczo mówisz, że możesz traktować instancję A tak, jakby faktycznie była ona typu B. W języku VBA, tak jak to robisz, deklarując zmienną typu B, a następnie ustawienie go na wystąpienie A. VBA będzie wiedział, co zrobić, gdy nazywają go jak B:
Dim usedAsB as B
Dim anA as A
Set anA = New A
Set usedAsB = anA 'fine since A implements B
usedAsB.something() 'will call B_something() defined in class A
jeśli chodzi o to, co widzisz w deb ug okno, nie wiem dlaczego tak się wydaje. A jeśli chodzi o wymuszoną delegację, nie jestem pewien, co masz na myśli. VBA automatycznie wywołuje połączenia do interfejsu B z odpowiednimi metodami w klasie A. Jeśli masz na myśli automatyczne generowanie kodu do dziedziczenia implementacji B w sposób opisany powyżej, nie ma nic takiego, o czym wiem dla VBA. Myślę, że różne "profesjonalne" wersje VB6 mogłyby to zrobić, ale nigdy nie korzystałem z VB6, więc nie wiem.
Dzięki! Czy znasz jakieś źródło o precyzyjnym instancji klas w VBA?W debugowaniu widzę, że klasa A ma pole typu B. Tak więc, gdzieś w Internecie uważam, że obiekt typu A jest obiektem typu B (!), Rzeczywiście; z wymuszoną delegacją. – nikaan
@Nikita, przeczytałbym inne rozdziały w Przewodniku programisty, który zajmuje się "programowaniem z obiektami". Jeśli chodzi o inne pytanie, zamierzam edytować moją odpowiedź, ponieważ prawdopodobnie nie zmieści się w komentarzu. Spójrz tam za kilka minut ... – jtolle