MustInherit (Visual Basic)
クラスが基底クラスとしてのみ使用でき、オブジェクトを直接作成できないことを示します。
Remarks
基底クラス (抽象クラスとも呼ばれます) の目的は、このクラスから派生したすべてのクラスに共通の機能を定義することです。 これにより、派生クラスで共通の要素を再定義する必要がなくなります。 場合によっては、この共通機能は使用可能なオブジェクトを作成するのに十分ではなく、各派生クラスで不足している機能が定義されます。 このような場合は、使用しているコードで派生クラスからのみオブジェクトを作成する必要があります。 これを適用するには、基底クラスで MustInherit
を使用します。
MustInherit
クラスのもう 1 つの用途は、変数を関連するクラスのセットに制限することです。 基底クラスを定義し、そこから関連するすべてのクラスを派生させることができます。 基底クラスがすべての派生クラスに共通する機能を提供する必要はありませんが、変数に値を代入するためのフィルターとして使用できます。 使用しているコードが変数を基底クラスとして宣言している場合は、Visual Basic によって、派生クラスのいずれかからその変数にオブジェクトのみを割り当てることができます。
.NET Framework は、Array、Enum、ValueType などのいくつかの MustInherit
クラスを定義します。 ValueType は、変数を制限する基底クラスの例です。 すべての値の型は ValueType から派生します。 変数を ValueType として宣言する場合は、その変数に値の型のみを割り当てることができます。
ルール
宣言コンテキスト。
Class
ステートメントではMustInherit
のみ使用できます。結合された修飾子。 同じ宣言内で
MustInherit
をNotInheritable
と共に指定することはできません。
例
継承の強制とオーバーライドの強制の両方の例を次に示します。 基底クラス shape
は acrossLine
変数を定義します。 クラス circle
および square
は shape
から派生します。 これらは 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
shape1
と shape2
を型 shape
として宣言できます。 ただし、shape
からオブジェクトを作成することはできません。これには関数 area
の機能がなく、MustInherit
としてマークされているためです。
これらは shape
として宣言されているため、変数 shape1
および shape2
は、派生クラス circle
および square
のオブジェクトに制限されます。 Visual Basic では、これらの変数に他のオブジェクトを割り当てることはできません。これにより、高いレベルのタイプ セーフが実現します。
使用方法
MustInherit
修飾子は、次のコンテキストで使用できます。
関連項目
.NET