次の方法で共有


MustInherit (Visual Basic)

クラスを基底クラスとしてのみ使用でき、そこから直接オブジェクトを作成できないことを指定します。

注釈

基底クラス (抽象クラスとも呼ばれます) の目的は、そこから派生するすべてのクラスに共通する機能を定義することです。 これにより、派生クラスが共通の要素を再定義する必要ができなくなります。 場合によっては、この一般的な機能が、使用可能なオブジェクトを作成するのに十分ではありません。また、各派生クラスは不足している機能を定義します。 このような場合は、使用するコードで派生クラスからのみオブジェクトを作成する必要があります。 これを適用するには、基底クラスで MustInherit を使用します。

MustInherit クラスのもう 1 つの用途は、変数を一連の関連クラスに制限することです。 基底クラスを定義し、そこからこれらすべての関連クラスを派生させることができます。 基底クラスは、すべての派生クラスに共通する機能を提供する必要はありませんが、変数に値を割り当てるためのフィルターとして機能できます。 使用しているコードで変数が基底クラスとして宣言されている場合、Visual Basic では、派生クラスの 1 つのオブジェクトのみをその変数に割り当てることができます。

.NET Framework では、ArrayEnumValueTypeなど、いくつかのMustInherit クラスが定義されています。 ValueType は、変数を制限する基底クラスの例です。 すべての値型は、 ValueTypeから派生します。 変数を ValueTypeとして宣言する場合は、その変数に値型のみを割り当てることができます。

準則

  • 宣言コンテキスト。 MustInheritは、Class ステートメントでのみ使用できます。

  • 結合された修飾子。 同じ宣言内のMustInheritと共にNotInheritableを指定することはできません。

次の例は、強制継承と強制オーバーライドの両方を示しています。 基底クラス shape 変数 acrossLineを定義します。 クラスcircleし、squareshapeから派生します。 acrossLineの定義を継承しますが、その計算は図形の種類ごとに異なるため、area関数を定義する必要があります。

Public MustInherit Class shape
    Public acrossLine As Double
    Public MustOverride Function area() As Double
End Class
Public Class circle : Inherits shape
    Public Overrides Function area() As Double
        Return Math.PI * acrossLine
    End Function
End Class
Public Class square : Inherits shape
    Public Overrides Function area() As Double
        Return acrossLine * acrossLine
    End Function
End Class
Public Class consumeShapes
    Public Sub makeShapes()
        Dim shape1, shape2 As shape
        shape1 = New circle
        shape2 = New square
    End Sub
End Class

shape1shape2shape型として宣言できます。 ただし、関数areaの機能がなく、MustInheritマークされているため、shapeからオブジェクトを作成することはできません。

変数は shapeとして宣言されているため、変数 shape1shape2 は、派生クラスの circle および squareからのオブジェクトに制限されます。 Visual Basic では、これらの変数に他のオブジェクトを割り当てないため、高レベルの型安全性が得られます。

使用方法

MustInherit修飾子は、次のコンテキストで使用できます。

クラス ステートメント

こちらも参照ください