Share via


MustInherit (Visual Basic)

Hiermee geeft u op dat een klasse alleen als basisklasse kan worden gebruikt en dat u er geen object rechtstreeks van kunt maken.

Opmerkingen

Het doel van een basisklasse (ook wel een abstracte klasse genoemd) is het definiëren van functionaliteit die gebruikelijk is voor alle klassen die ermee zijn afgeleid. Hierdoor hoeven de afgeleide klassen niet de algemene elementen opnieuw te definiëren. In sommige gevallen is deze algemene functionaliteit niet volledig genoeg om een bruikbaar object te maken en definieert elke afgeleide klasse de ontbrekende functionaliteit. In dat geval wilt u dat de verbruikende code alleen objecten maakt op basis van de afgeleide klassen. U gebruikt MustInherit de basisklasse om dit af te dwingen.

Een ander gebruik van een klasse is het beperken van een MustInherit variabele tot een set gerelateerde klassen. U kunt een basisklasse definiëren en al deze gerelateerde klassen ervan afleiden. De basisklasse hoeft geen functionaliteit te bieden die gebruikelijk is voor alle afgeleide klassen, maar kan fungeren als filter voor het toewijzen van waarden aan variabelen. Als uw verbruikende code een variabele declareert als basisklasse, kunt u met Visual Basic slechts een object uit een van de afgeleide klassen toewijzen aan die variabele.

Het .NET Framework definieert verschillende MustInherit klassen, waaronder Array, Enumen ValueType. ValueType is een voorbeeld van een basisklasse die een variabele beperkt. Alle waardetypen zijn afgeleid van ValueType. Als u een variabele declareert als ValueType, kunt u alleen waardetypen toewijzen aan die variabele.

Regels

  • Declaratiecontext. U kunt alleen in een Class instructie gebruikenMustInherit.

  • Gecombineerde modifiers. U kunt niet samen met NotInheritable dezelfde declaratie opgevenMustInherit.

Opmerking

In het volgende voorbeeld ziet u zowel geforceerde overname als geforceerd overschrijven. De basisklasse shape definieert een variabele acrossLine. De klassen circle en square afgeleid van shape. Ze nemen de definitie over van acrossLine, maar ze moeten de functie area definiëren omdat die berekening verschilt voor elk type vorm.

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

U kunt declareren shape1 en shape2 van het type shapezijn. U kunt echter geen object shape maken van waaruit het niet beschikt over de functionaliteit van de functie area en is gemarkeerd MustInherit.

Omdat ze worden gedeclareerd als shape, worden de variabelen shape1 en shape2 beperkt tot objecten uit de afgeleide klassen circle en square. Visual Basic staat u niet toe om andere objecten toe te wijzen aan deze variabelen, waardoor u een hoog niveau van typeveiligheid krijgt.

Gebruik

De MustInherit wijzigingsfunctie kan in deze context worden gebruikt:

Klasse-instructie

Zie ook