MustInherit
Aktualisiert: November 2007
Legt fest, dass eine Klasse lediglich als Basisklasse verwendet werden kann und Objekte dieser Klasse nicht direkt erstellt werden können.
Hinweise
Eine Basisklasse (auch abstrakte Klasse genannt) dient dem Zweck, eine Funktionalität zu definieren, die allen Klassen gemeinsam ist, die von dieser Klasse abgeleitet werden. In den abgeleiteten Klassen müssen dadurch die gemeinsamen Elemente nicht neu definiert werden. Manchmal ist diese gemeinsame Funktionalität nicht umfassend genug, um ein brauchbares Objekt zu bilden. Jede abgeleitete Klasse definiert dann die fehlende Funktionalität. In einem solchen Fall soll der verwendete Code Objekte nur aus den abgeleiteten Klassen erstellen. Wenden Sie MustInherit auf die Basisklasse an, um dies zu durchzusetzen.
Eine andere Verwendungsmöglichkeit für eine MustInherit-Klasse besteht darin, eine Variable auf einen Satz verwandter Klassen zu beschränken. Sie können eine Basisklasse definieren und diese verwandten Klassen davon ableiten. Die Basisklasse muss keine Funktionalität bereitstellen, die allen abgeleiteten Klassen gemeinsam ist, aber sie kann als Filter für die Zuweisung von Werten zu Variablen dienen. Wenn im verwendeten Code eine Variable vom Typ der Basisklasse deklariert wird, lässt Visual Basic nur zu, dass dieser Variablen ein Objekt vom Typ einer der abgeleiteten Klassen zugewiesen wird.
In .NET Framework sind einige MustInherit-Klassen definiert, darunter Array, Enum und ValueType. ValueType ist ein Beispiel für eine Basisklasse, die eine Variable beschränkt. Alle Werttypen sind von ValueType abgeleitet. Wenn Sie eine Variable als ValueType deklarieren, können Sie dieser Variablen nur Werttypen zuweisen.
Regeln
Deklarationskontext. Sie können MustInherit nur in einer Class-Anweisung verwenden.
Kombinierte Modifizierer. Sie können MustInherit nicht zusammen mit NotInheritable in derselben Deklaration angeben.
Beispiel
Im folgenden Beispiel werden sowohl die erzwungene Vererbung als auch das erzwungene Überschreiben veranschaulicht. In der shape-Basisklasse ist die acrossLine-Variable definiert. Die circle-Klasse und die square-Klasse sind von shape abgeleitet. Sie erben die Definition von acrossLine, müssen jedoch die Funktion area definieren, weil diese Berechnung von der Art der Form abhängig 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 shape1 und shape2 als Klassen vom Typ shape deklarieren. Allerdings können Sie kein Objekt vom Typ shape erstellen, weil diese Klasse nicht über die Funktionalität der area-Funktion verfügt und als MustInherit deklariert ist.
Weil die shape1-Variable und die shape2-Variable als shape deklariert sind, sind sie auf Objekte der abgeleiteten circle-Klasse und square-Klasse beschränkt. Visual Basic lässt nicht zu, dass diesen Variablen andere Objekte zugewiesen werden, wodurch ein hohes Maß an Typsicherheit geboten wird.
Verwendung
Der MustInherit-Modifizierer kann im folgenden Kontext verwendet werden:
Siehe auch
Referenz
Schlüsselwörter von Visual Basic