MustInherit (Visual Basic)

Gibt an, dass eine Klasse nur als Basisklasse verwendet werden kann und dass nicht direkt ein Objekt daraus erstellt werden kann.

Bemerkungen

Der Zweck einer Basisklasse (auch abstrakte Klasse genannt) besteht darin, Funktionen zu definieren, über die alle von ihr abgeleiteten Klassen verfügen. Dadurch müssen die gemeinsamen Elemente abgeleiteter Klasse nicht neu definiert werden. Manchmal sind die gemeinsamen Funktionen nicht umfassend genug, um ein verwendbares Objekt zu erzeugen, und jede abgeleitete Klasse definiert die fehlenden Funktionen. In einem solchen Fall darf der nutzende Code Objekte nur auf der Grundlage der abgeleiteten Klassen erstellen. Verwenden Sie MustInherit für die Basisklasse, um dies zu erzwingen.

Eine weitere Verwendungsmöglichkeit einer MustInherit-Klasse besteht darin, eine Variable auf eine Gruppe verwandter Klassen zu beschränken. Sie können eine Basisklasse definieren und alle diese verwandten Klassen davon ableiten. Die Basisklasse muss keine Funktionen bereitstellen, über die alle abgeleiteten Klassen verfügen, kann aber als Filter für die Zuweisung von Werten zu Variablen fungieren. Wenn der nutzende Code eine Variable als Basisklasse deklariert, können Sie dieser Variablen mit Visual Basic nur ein Objekt aus einer der abgeleiteten Klassen zuweisen.

.NET Framework definiert mehrere MustInherit-Klassen, darunter Array, Enum und ValueType. ValueType ist ein Beispiel für eine Basisklasse, die eine Variable einschränkt. Alle Werttypen werden von ValueType abgeleitet. Wenn Sie eine Variable als ValueType deklarieren, können Sie dieser Variablen nur Werttypen zuweisen.

Regeln

  • Deklarationskontext. MustInherit kann nur in einer Class-Anweisung verwendet werden.

  • Kombinierte Modifizierer. MustInherit kann nicht zusammen mit NotInheritable in der gleichen Deklaration angegeben werden.

Beispiel

Das folgende Beispiel veranschaulicht sowohl die erzwungene Vererbung als auch die erzwungene Außerkraftsetzung. Die Basisklasse shape definiert die Variable acrossLine. Die Klassen circle und square werden von shape abgeleitet. Sie erben die Definition von acrossLine, müssen aber die Funktion area definieren, da diese Berechnung für jede Art von Form unterschiedlich ist.

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

Sie können deklarieren, dass es sich bei shape1 und shape2 um Elemente vom Typ shape handelt. Sie können jedoch kein Objekt auf der Grundlage von shape erstellen, da das Element mit MustInherit markiert ist und nicht über die Funktion area verfügt.

Da die Variablen shape1 und shape2 als shape deklariert sind, sind sie auf Objekte aus den abgeleiteten Klassen circle und squarebeschränkt. Mit Visual Basic kann diesen Variablen kein anderes Objekt zugewiesen werden, was ein hohes Maß an Typsicherheit bietet.

Verbrauch

Der MustInherit-Modifizierer kann im folgenden Kontext verwendet werden:

Class-Anweisung

Siehe auch