「MustInherit」は、VBAでのクラスの定義において使用されるキーワードです。このキーワードを使用することで、そのクラスを継承専用(抽象クラス)にすることができます。つまり、継承元として利用することはできますが、そのままインスタンスを作成することはできません。
なぜ「MustInherit」を使用するのかというと、継承元のクラスに共通のメソッドやプロパティを定義し、派生クラスでそれらを具体的に実装するためです。継承元のクラスが抽象的な概念であり、それ自体を直接利用する必要がない場合に「MustInherit」を使用します。
以下に、「MustInherit」の使用例を示します。
Public MustInherit Class Shape
Public MustOverride Function CalculateArea() As Double
End Class
Public Class Circle
Inherits Shape
Private radius As Double
Public Sub New(ByVal r As Double)
radius = r
End Sub
Public Overrides Function CalculateArea() As Double
Return Math.PI * radius * radius
End Function
End Class
Public Class Rectangle
Inherits Shape
Private width As Double
Private height As Double
Public Sub New(ByVal w As Double, ByVal h As Double)
width = w
height = h
End Sub
Public Overrides Function CalculateArea() As Double
Return width * height
End Function
End Class
Sub Main()
Dim circle As New Circle(5)
Dim rectangle As New Rectangle(3, 4)
Dim shapes As Shape() = {circle, rectangle}
For Each shape As Shape In shapes
Debug.Print(shape.CalculateArea())
Next
End Sub
上記のコードでは、抽象クラス「Shape」を定義し、「CalculateArea」メソッドを抽象メソッドとして宣言しています。このクラスを継承した「Circle」と「Rectangle」クラスでは、それぞれ円の面積と長方形の面積を計算するメソッドを具体的に実装しています。
「Shape」クラスを継承したインスタンスを作成し、それぞれの面積を計算して表示する例も示しています。
以上が、「MustInherit」キーワードの使用方法と意味についての解説です。このキーワードを活用することで、VBAでより効果的なオブジェクト指向プログラミングを実現することができます。