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