MustInherit (Visual Basic)

Specifica che una classe può essere utilizzata solo come classe di base e che non è possibile creare un oggetto direttamente da essa.

Commenti

Lo scopo di una classe di base (nota anche come classe astratta ) è definire funzionalità comuni a tutte le classi derivate da essa. In questo modo le classi derivate non possono dover ridefinire gli elementi comuni. In alcuni casi, questa funzionalità comune non è sufficiente per creare un oggetto utilizzabile e ogni classe derivata definisce la funzionalità mancante. In tal caso, si vuole che il codice utilizzato crei oggetti solo dalle classi derivate. Per applicare MustInherit questa operazione, usare nella classe di base.

Un altro uso di MustInherit una classe è limitare una variabile a un set di classi correlate. È possibile definire una classe di base e derivare tutte queste classi correlate da essa. La classe di base non deve fornire alcuna funzionalità comune a tutte le classi derivate, ma può fungere da filtro per l'assegnazione di valori alle variabili. Se il codice che utilizza dichiara una variabile come classe di base, Visual Basic consente di assegnare a tale variabile solo un oggetto di una delle classi derivate.

Il .NET Framework definisce diverse MustInherit classi, tra cui Array Enum , e ValueType . ValueType è un esempio di classe base che limita una variabile. Tutti i tipi di valore derivano da ValueType . Se si dichiara una variabile come ValueType , è possibile assegnare solo tipi valore a tale variabile.

Regole

  • Contesto della dichiarazione. È possibile usare MustInherit solo in Class un'istruzione .

  • Modificatori combinati. Non è possibile MustInherit specificare insieme a nella stessa NotInheritable dichiarazione.

Esempio

Nell'esempio seguente vengono illustrate sia l'ereditarietà forzata che l'override forzato. La classe di base shape definisce una variabile acrossLine . Le classi circle e square derivano da shape . Ereditano la definizione di acrossLine , ma devono definire la funzione perché tale calcolo è diverso per ogni tipo di area forma.

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

È possibile dichiarare shape1 e come di tipo shape2 shape . Tuttavia, non è possibile creare un oggetto da perché non dispone della shape funzionalità della funzione ed è area contrassegnato come MustInherit .

Poiché sono dichiarate come shape , le variabili e sono limitate agli oggetti delle classi shape1 shape2 derivate e circle square . Visual Basic non consente di assegnare altri oggetti a queste variabili, in modo da garantire un elevato livello di sicurezza dei tipi.

Utilizzo

Il MustInherit modificatore può essere usato in questo contesto:

Istruzione Class

Vedi anche