Dela via


MustInherit (Visual Basic)

Anger att en klass endast kan användas som basklass och att du inte kan skapa ett objekt direkt från den.

Kommentarer

Syftet med en basklass (även kallad abstrakt klass) är att definiera funktioner som är gemensamma för alla klasser som härleds från den. Detta sparar de härledda klasserna från att behöva omdefiniera de gemensamma elementen. I vissa fall är den här vanliga funktionen inte tillräckligt fullständig för att göra ett användbart objekt, och varje härledd klass definierar de funktioner som saknas. I så fall vill du att den förbrukande koden endast ska skapa objekt från de härledda klasserna. Du använder MustInherit i basklassen för att framtvinga detta.

En annan användning av en MustInherit klass är att begränsa en variabel till en uppsättning relaterade klasser. Du kan definiera en basklass och härleda alla dessa relaterade klasser från den. Basklassen behöver inte tillhandahålla några funktioner som är gemensamma för alla härledda klasser, men den kan fungera som ett filter för att tilldela värden till variabler. Om din användningskod deklarerar en variabel som basklass kan du med Visual Basic endast tilldela ett objekt från en av de härledda klasserna till variabeln.

.NET Framework definierar flera MustInherit klasser, bland dem Array, Enumoch ValueType. ValueType är ett exempel på en basklass som begränsar en variabel. Alla värdetyper härleds från ValueType. Om du deklarerar en variabel som ValueTypekan du endast tilldela värdetyper till den variabeln.

Regler

  • Deklarationskontext. Du kan bara använda MustInherit i en Class -instruktion.

  • Kombinerade modifierare. Du kan inte ange MustInherit tillsammans med NotInheritable i samma deklaration.

Exempel

I följande exempel visas både framtvingat arv och påtvingat åsidosättande. Basklassen shape definierar en variabel acrossLine. Klasserna circle och square härleds från shape. De ärver definitionen av acrossLine, men de måste definiera funktionen area eftersom den beräkningen skiljer sig åt för varje formtyp.

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

Du kan deklarera shape1 och shape2 vara av typen shape. Du kan dock inte skapa ett objekt från shape eftersom det saknar funktionens area funktioner och är markerad MustInherit.

Eftersom de deklareras som shape, är variablerna shape1 och shape2 begränsade till objekt från de härledda klasserna circle och square. Visual Basic tillåter inte att du tilldelar något annat objekt till dessa variabler, vilket ger dig en hög typsäkerhetsnivå.

Användning

Modifieraren kan användas i den här kontexten MustInherit :

Klassuttryck

Se även