Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Specifica che una classe può essere usata solo come classe di base e che non è possibile creare un oggetto direttamente da esso.
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 MustInherit classe 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 MustInherit classi, tra cui Array, Enume ValueType.
ValueType è un esempio di una classe di base che limita una variabile. Tutti i tipi valore 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
MustInheritsolo in un'istruzioneClass.Modificatori combinati. Non è possibile specificare
MustInheritinsieme nellaNotInheritablestessa dichiarazione.
Esempio
L'esempio seguente illustra sia l'ereditarietà forzata che l'override forzato. La classe shape base 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 per essere di tipo shape. Tuttavia, non è possibile creare un oggetto da shape perché non dispone della funzionalità della funzione area ed è contrassegnato come MustInherit.
Poiché vengono dichiarati come shape, le variabili shape1 e shape2 sono limitate agli oggetti dalle classi circle derivate e square. Visual Basic non consente di assegnare altri oggetti a queste variabili, che offre un livello elevato di sicurezza dei tipi.
Uso
Il MustInherit modificatore può essere usato in questo contesto: