Procedura: nascondere una variabile ereditata (Visual Basic)
Una classe derivata eredita tutte le definizioni della relativa classe di base. Se si vuole definire una variabile usando lo stesso nome di un elemento della classe di base, è possibile nascondere, ovvero sottoporre a shadowing, l'elemento della classe di base quando si definisce la variabile nella classe derivata. In questo caso, il codice nella classe derivata accede alla variabile a meno che non ignori in modo esplicito il meccanismo di shadowing.
Un altro motivo per cui si potrebbe voler nascondere una variabile ereditata è per proteggerla dalla revisione della classe di base. La classe base potrebbe subire una modifica che modifica l'elemento da ereditare. In questo caso, il modificatore Shadows
forza la risoluzione dei riferimenti della classe derivata nella variabile anziché nell'elemento della classe di base.
Per nascondere una variabile ereditata
Assicurarsi che la variabile da nascondere sia dichiarata a livello di classe (all'esterno di qualsiasi routine). In caso contrario, non è necessario nasconderlo.
All'interno della classe derivata scrivere un'istruzione Dim che dichiara la variabile. Usare lo stesso nome della variabile ereditata.
Includere la parola chiave Shadows nella dichiarazione.
Quando il codice nella classe derivata fa riferimento al nome della variabile, il compilatore risolve il riferimento alla variabile.
Nell'esempio seguente viene illustrato lo shadowing di una variabile ereditata:
Public Class ShadowBaseClass Public shadowString As String = "This is the base class string." End Class Public Class ShadowDerivedClass Inherits ShadowBaseClass Public Shadows shadowString As String = "This is the derived class string." Public Sub ShowStrings() Dim s As String = $"Unqualified shadowString: {shadowString}{vbCrLf}MyBase.shadowString: {MyBase.shadowString}" MsgBox(s) End Sub End Class
Nell'esempio precedente la variabile
shadowString
viene dichiarata nella classe di base e sottoposta a shadowing nella classe derivata. La routineShowStrings
nella classe derivata visualizza la versione per lo shadowing della stringa quando il nomeshadowString
non è qualificato. Visualizza quindi la versione sottoposta a shadowing quandoshadowString
è qualificato con la parola chiaveMyBase
.
Programmazione efficiente
Lo shadowing consente di introdurre più versioni di una variabile con lo stesso nome. Quando un'istruzione di codice fa riferimento al nome della variabile, la versione con cui il compilatore risolve il riferimento dipende da fattori quali la posizione dell'istruzione di codice e la presenza di una stringa qualificata. In questo modo può aumentare il rischio di fare riferimento a una versione non intenzionale di una variabile sottoposta a shadowing. È possibile ridurre il rischio qualificando completamente tutti i riferimenti a una variabile sottoposta a shadowing.
Vedi anche
- Riferimenti a elementi dichiarati
- Shadowing in Visual Basic
- Differenze tra shadowing e override
- Procedura: nascondere una variabile con lo stesso nome di un'altra variabile
- Procedura: accedere a una variabile nascosta da una classe derivata
- Overrides
- Me, My, MyBase e MyClass
- Nozioni fondamentali sull'ereditarietà