VBAでの「MustInherit」の使用方法と意味


「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でより効果的なオブジェクト指向プログラミングを実現することができます。