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 einerClass
-Anweisung verwendet werden.Kombinierte Modifizierer.
MustInherit
kann nicht zusammen mitNotInheritable
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 square
beschrä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: