MustInherit (Visual Basic)
Specifica che una classe può essere utilizzata solo come classe base da cui non è possibile creare direttamente un oggetto.
Note
Lo scopo di una classe base, nota anche come classe astratta, è di definire la funzionalità comune a tutte le classi da essa derivate,con il vantaggio per le classi derivate di non dover ridefinire gli elementi comuni.In alcuni casi la funzionalità condivisa non è sufficientemente completa da creare un oggetto utilizzabile e ogni classe derivata definisce la funzionalità mancante.In una situazione del genere il codice utilizzato deve creare oggetti solo dalle classi derivate.Utilizzare MustInherit sulla classe base per attivare la procedura.
Un altro impiego di una classe MustInherit consiste nel limitare una variabile a un insieme di classi correlate.È possibile definire una classe base da cui derivare tutte le classi correlate.La classe base non deve fornire alcuna funzionalità comune a tutte le classi derivate, ma può essere utilizzata come filtro per l'assegnazione di valori alle variabili.Se il codice utilizzato dichiara una variabile come classe base, in Visual Basic sarà possibile assegnare alla variabile solo un oggetto di una delle classi derivate.
In .NET Framework vengono definite diverse classi MustInherit, tra cui Array, Enum e ValueType.ValueType è un esempio di classe di base che limita una variabile.Tutti i tipi di valore derivano da ValueType.Se si dichiara una variabile come ValueType, è possibile assegnare solo tipi di valore a quella variabile.
Regole
Contesto della dichiarazione. È possibile utilizzare MustInherit solo in un'istruzione Class.
Modificatori combinati. Non è possibile specificare MustInherit insieme a NotInheritable nella stessa dichiarazione.
Esempio
Nell'esempio riportato di seguito vengono illustrati l'ereditarietà forzata e l'override forzato.La classe base shape definisce una variabile acrossLine.Le classi circle e square derivano da shape.Ereditano la definizione di acrossLine, ma devono definire la funzione area in quanto il calcolo varia in base al tipo di 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 le variabili shape1 e shape2 di tipo shape.Non è tuttavia possibile creare un oggetto da shape in quanto non dispone della funzionalità della funzione area ed è contrassegnato con MustInherit.
Dal momento che sono dichiarate come shape, le variabili shape1 e shape2 sono limitate a oggetti delle classi derivate circle e square.In Visual Basic non è consentita l'assegnazione di qualsiasi altro oggetto a tali variabili, con evidenti vantaggi in termini di indipendenza dai tipi.
Utilizzo
Il modificatore MustInherit può essere utilizzato in questo contesto:
Vedere anche
Riferimenti
Concetti
Nozioni fondamentali sull'ereditarietà (Visual Basic)