私が構築しているさまざまなvbaカスタムオブジェクトで、同一のプロパティとメソッドをコピーして貼り付けるのにかなりの時間を費やしています。VBA でカスタム オブジェクト階層を作成して、1 つのオブジェクトが他のオブジェクトからプロパティとメソッドを継承する方法を教えてください。
Pythonでは、次のように書くと思います:
クラスカー(オブジェクト)
なんでもいい
Class SlowCar(車)
何でも継承する
クラス FastCar(車)
何でも継承する
前もって。
私が構築しているさまざまなvbaカスタムオブジェクトで、同一のプロパティとメソッドをコピーして貼り付けるのにかなりの時間を費やしています。VBA でカスタム オブジェクト階層を作成して、1 つのオブジェクトが他のオブジェクトからプロパティとメソッドを継承する方法を教えてください。
Pythonでは、次のように書くと思います:
クラスカー(オブジェクト)
なんでもいい
Class SlowCar(車)
何でも継承する
クラス FastCar(車)
何でも継承する
前もって。
あなたの言っていることが理解できれば、これはクラスモジュールを介して行うことができます。
Car
たとえば) に変更します (まだ表示されていない場合は、F4 を押して表示します)。クラス モジュールを作成したので、その変数やプロパティを定義できます。以下の例Car
では、車の名前と速度を保持するオブジェクトを作成するクラス モジュールに入ります。
Private carName As String
Private carSpeed As Integer
' Car Name
Public Property Get Name() As String
Name = carName
End Property
Public Property Let Name(result As String)
carName = result
End Property
' Car Speed
Public Property Get Speed() As Integer
Speed = carSpeed
End Property
Public Property Let Speed(result As Integer)
carSpeed = result
End Property
次に、モジュールから、次のことができます
Sub CreateMyCars()
Dim slowCar as Car
Dim fastCar as Car
Set slowCar = New Car
Set fastCar = New Car
slowCar.Name = "GoKart"
slowCar.Speed = 35
fastCar.Name = "Ferarri"
fastCar.Speed = 185
End Sub
VBA はインターフェイスを使用して継承をサポートしていますが、実装ではなくメソッドのシグネチャのみを "継承" します。
オブジェクトの実装を再利用する方法は、合成によるものです。
Class Car(Object)
whatever
Class SlowCar(Car)
Implements Car
private mCar as Car
Private Sub Class_Initialize
set mCar = new Car
End Sub
Private Sub Car_whatever
Call mCar.whatever
End Sub
FastCar も同様です。