MustInherit (Visual Basic)MustInherit (Visual Basic)

クラスを基底クラスとしてのみ使用できることと、オブジェクトを直接作成できないことを指定します。Specifies that a class can be used only as a base class and that you cannot create an object directly from it.

RemarksRemarks

目的を基本クラス(とも呼ばれます、抽象クラス) それから派生したすべてのクラスに共通した機能を定義することです。The purpose of a base class (also known as an abstract class) is to define functionality that is common to all the classes derived from it. これにより、派生クラスが共通の要素を再定義する必要がなくなります。This saves the derived classes from having to redefine the common elements. 場合によっては、この共通の機能が、使用可能なオブジェクトを作成するのに十分な完了していませんし、各派生クラスが不足している機能を定義します。In some cases, this common functionality is not complete enough to make a usable object, and each derived class defines the missing functionality. このような場合は、派生クラスからのみオブジェクトを作成、使用側コードをします。In such a case, you want the consuming code to create objects only from the derived classes. 使用するMustInheritでこれを強制する基本クラス。You use MustInherit on the base class to enforce this.

別の用途をMustInheritクラスは、関連するクラスのセットに変数を制限します。Another use of a MustInherit class is to restrict a variable to a set of related classes. 基本クラスを定義し、そこからこれらのすべての関連するクラスを派生できます。You can define a base class and derive all these related classes from it. 基本クラスは、すべての派生クラスに共通の機能を提供する必要はありませんが、その変数に値を割り当てるためのフィルターとして使用できます。The base class does not need to provide any functionality common to all the derived classes, but it can serve as a filter for assigning values to variables. 使用側コードでは、基底クラスとしての変数を宣言する場合に、Visual Basic を使用すると、派生クラスの 1 つのオブジェクトのみをその変数に代入できます。If your consuming code declares a variable as the base class, Visual Basic allows you to assign only an object from one of the derived classes to that variable.

.NET Framework では、いくつかを定義しますMustInheritクラスは、それらの間でArrayEnum、およびValueTypeします。The .NET Framework defines several MustInherit classes, among them Array, Enum, and ValueType. ValueType 変数を制限する基底クラスの例に示します。ValueType is an example of a base class that restricts a variable. すべての値の型から派生ValueTypeします。All value types derive from ValueType. として変数を宣言する場合ValueType、その変数に値型のみを割り当てることができます。If you declare a variable as ValueType, you can assign only value types to that variable.

ルールRules

  • 宣言コンテキスト。Declaration Context. 使用することができますMustInheritでのみ、Classステートメント。You can use MustInherit only in a Class statement.

  • 結合された修飾子。Combined Modifiers. 指定することはできませんMustInheritと共にNotInheritable同じ宣言内。You cannot specify MustInherit together with NotInheritable in the same declaration.

Example

次の例は、強制的な継承と強制的なオーバーライドを示しています。The following example illustrates both forced inheritance and forced overriding. 基本クラスshape変数を定義しますacrossLineします。The base class shape defines a variable acrossLine. クラスは、circlesquareから派生shapeします。The classes circle and square derive from shape. 定義を継承acrossLine、関数を定義する必要がありますが、area計算は図形の種類ごとに異なるためです。They inherit the definition of acrossLine, but they must define the function area because that calculation is different for each kind of shape.

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します。You can declare shape1 and shape2 to be of type shape. オブジェクトを作成することはできませんただし、shape関数の機能がないためareaがマークされているとMustInheritします。However, you cannot create an object from shape because it lacks the functionality of the function area and is marked MustInherit.

として宣言されているため、 shape、変数shape1shape2派生クラスからオブジェクトに制限されるcirclesquareします。Because they are declared as shape, the variables shape1 and shape2 are restricted to objects from the derived classes circle and square. Visual Basic はできません、他のオブジェクトをこれらの変数に割り当てることにより、タイプ セーフの高レベル。Visual Basic does not allow you to assign any other object to these variables, which gives you a high level of type safety.

使用法Usage

MustInherit修飾子は、このコンテキストで使用できます。The MustInherit modifier can be used in this context:

Class ステートメントClass Statement

関連項目See also