Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
Reglement
Declaratiecontext. U kunt alleen in een
Classinstructie gebruikenMustInherit.Gecombineerde modifiers. U kunt niet samen met
NotInheritabledezelfde declaratie opgevenMustInherit.
Voorbeeld
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: