Teilen über


MustInherit (Visual Basic)

Gibt an, dass eine Klasse nur als Basisklasse verwendet werden kann und dass Sie ein Objekt nicht direkt daraus erstellen können.

Bemerkungen

Der Zweck einer Basisklasse (auch als abstrakte Klasse bezeichnet) besteht darin, Funktionen zu definieren, die allen von ihr abgeleiteten Klassen gemeinsam sind. Dadurch werden die abgeleiteten Klassen daran gehindert, die gemeinsamen Elemente neu zu definieren. In einigen Fällen ist diese allgemeine Funktionalität nicht vollständig genug, um ein verwendbares Objekt zu erstellen, und jede abgeleitete Klasse definiert die fehlende Funktionalität. In einem solchen Fall möchten Sie, dass der verbrauchende Code Objekte nur aus den abgeleiteten Klassen erstellt. Sie verwenden MustInherit die Basisklasse, um dies zu erzwingen.

Eine weitere Verwendung einer MustInherit Klasse besteht darin, eine Variable auf einen Satz verwandter Klassen zu beschränken. Sie können eine Basisklasse definieren und alle diese verwandten Klassen daraus ableiten. Die Basisklasse muss keine Funktionalität bereitstellen, die allen abgeleiteten Klassen gemeinsam ist, aber sie kann als Filter zum Zuweisen von Werten zu Variablen dienen. Wenn Ihr verbrauchender Code eine Variable als Basisklasse deklariert, können Sie in Visual Basic nur ein Objekt aus einer der abgeleiteten Klassen dieser Variablen zuweisen.

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

Regeln

  • Deklarationskontext. Sie können nur in einer Class Anweisung verwendet werdenMustInherit.

  • Kombinierte Modifizierer. Sie können nicht zusammen mit MustInherit derselben Deklaration angebenNotInheritable.

Beispiel

Das folgende Beispiel veranschaulicht sowohl die erzwungene Vererbung als auch die erzwungene Überschreibung. Die Basisklasse shape definiert eine Variable acrossLine. Die Klassen circle und square abgeleitet von shape. Sie erben die Definition von acrossLine, aber sie müssen 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 shape1 und shape2 vom Typ shapesein. Sie können jedoch kein Objekt shape erstellen, weil es nicht die Funktionalität der Funktion area enthält und markiert MustInheritist.

Da sie als shapedeklariert werden, sind die Variablen shape1 und auf Objekte aus den abgeleiteten Klassen circle und squareshape2 . Visual Basic ermöglicht es Ihnen nicht, diesen Variablen ein anderes Objekt zuzuweisen, wodurch Sie eine hohe Typsicherheit erhalten.

Verwendung

Der MustInherit Modifizierer kann in diesem Kontext verwendet werden:

Klassen-Anweisung

Siehe auch