MustInherit (Visual Basic)
Specifica che una classe può essere usata solo come classe di base e che non è possibile creare un oggetto direttamente da tale classe.
Osservazioni:
Lo scopo di una classe base (nota anche come classe astratta) è definire funzionalità comuni a tutte le classi derivate da essa. In questo modo le classi derivate non devono ridefinire gli elementi comuni. In alcuni casi, questa funzionalità comune non è sufficiente per rendere utilizzabile un oggetto e ogni classe derivata definisce la funzionalità mancante. In tal caso, si vuole che il codice che utilizza solo le classi derivate crei oggetti. Per applicare questa operazione, usare MustInherit
nella classe di base.
Un altro uso di una classe MustInherit
consiste nel limitare una variabile a un set di classi correlate. È possibile definire una classe di base e derivare tutte queste classi correlate. La classe 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 di utilizzo dichiara una variabile come classe di base, Visual Basic consente di assegnare solo un oggetto da una delle classi derivate a tale variabile.
.NET Framework definisce diverse classi MustInherit
, tra cui Array, Enum e ValueType. ValueType è un esempio di una classe di base che limita una variabile. Tutti i tipi di valori derivano da ValueType. Se si dichiara una variabile come ValueType, è possibile assegnare solo tipi di valore a tale variabile.
Regole
Contesto della dichiarazione. È possibile usare
MustInherit
solo in un'istruzioneClass
.Modificatori combinati. Non è possibile specificare
MustInherit
insieme aNotInheritable
nella stessa dichiarazione.
Esempio
L'esempio seguente illustra 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 area
perché tale calcolo è diverso per ogni 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 shape1
e shape2
come tipo shape
. Tuttavia, non è possibile creare un oggetto da shape
perché non dispone della funzionalità della funzione area
ed è contrassegnato come MustInherit
.
Poiché vengono dichiarate come shape
, le variabili shape1
e shape2
sono limitate agli oggetti dalle classi derivate circle
e square
. Visual Basic non consente di assegnare altri oggetti a queste variabili, il che offre un livello elevato di sicurezza dei tipi.
Utilizzo
Il modificatore MustInherit
può essere usato in questo contesto: