VBA是基于COM的,COM不进行继承.但我想我可能有一个模式,它近似于它的某些方面:
Animal.cls
Public Sub Speak()
Err.Raise 418, , "Not supported"
End Sub
Run Code Online (Sandbox Code Playgroud)
Dog.cls
Implements Animal
Private mBase As Animal
Private Sub Class_Initialize()
Set mBase = New Animal
End Sub
Private Sub Animal_Speak()
Me.Speak
End Sub
Public Sub Speak()
MsgBox "Woof!"
End Sub
Public Property Get Base() As Animal
Set Base = mBase
End Property
Run Code Online (Sandbox Code Playgroud)
Test.bas
Sub Test()
Dim animal As animal: Set animal = New dog
Dim dog As dog: Set dog = New dog
Dim object As Object: Set …Run Code Online (Sandbox Code Playgroud) 我一直在学习如何使用串联继承在Javascript中进行对象组合,并且想知道如何在VBA(不具有继承)中完成类似的工作。
对象组成:我试图弄清楚如何实现“具有”关系与“是”关系。我希望能够编写简单的行为类,将它们组合在一起以构成更复杂的类,从而可以在其中使用它们。
我创建了一个简单的示例来演示我想要完成的工作。
以下是一些可能使用的示例。不过,对于这个问题,我将只关注Fighter类的示例用法。
该Fight方法实际上是Fight在CanFight类中调用该方法。它调试一条消息并将耐力降低1。
'MOST EXCITING GAME OF ALL TIME! =)
Private Sub StartGame()
Dim Slasher As Fighter
Set Slasher = New Fighter
Slasher.Name = "Slasher"
Slasher.Fight '-> Slasher slashes at the foe!
Debug.Print Slasher.Stamina '-> 99
'MAGES CAN ONLY CAST (ONLY HAS MANA)
Dim Scorcher As Mage
Set Scorcher = New Mage
Scorcher.Name = "Scorcher"
Scorcher.Cast "fireball" '->Scorcher …Run Code Online (Sandbox Code Playgroud)