Condividi tramite


Procedura: nascondere una variabile ereditata

Aggiornamento: novembre 2007

Una classe derivata eredita tutte le definizioni della relativa classe base. Se si desidera definire una variabile utilizzando lo stesso nome di un elemento della classe base, è possibile nascondere tale elemento al momento della definizione della variabile nella classe derivata. Se si esegue questa operazione, il codice della classe derivata accede alla variabile, a meno che il meccanismo di shadowing non venga esplicitamente ignorato.

Un altro motivo per nascondere una variabile ereditata per proteggerla da una revisione della classe base. La classe base può infatti essere sottoposta a una modifica che altera l'elemento che viene ereditato. In questo caso, il modificatore Shadows impone la risoluzione dei riferimenti dalla classe derivata nella variabile anziché nell'elemento della classe base.

Per nascondere una variabile ereditata

  1. Assicurarsi che la variabile che si desidera nascondere sia dichiarata a livello di classe (all'esterno di qualsiasi routine). In caso contrario, non è necessario nasconderla.

  2. All'interno della classe derivata, scrivere un'Istruzione Dim (Visual Basic) che dichiari la variabile. Utilizzare lo stesso nome della variabile ereditata.

  3. Includere nella dichiarazione la parola chiave Shadows.

    Quando il codice della classe derivata fa riferimento al nome della variabile, il compilatore risolve il riferimento alla variabile.

    Nell'esempio riportato di seguito viene illustrato come nascondere 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 base e viene quindi nascosta nella classe derivata. La routine showStrings della classe derivata visualizza la versione di shadowing della stringa quando il nome shadowString non è qualificato, quindi visualizza la versione nascosta quando shadowString viene qualificato con la parola chiave MyBase.

Programmazione efficiente

Il meccanismo di shadowing introduce più versioni di una variabile con lo stesso nome. Quando un'istruzione di codice fa riferimento al nome della variabile, la versione in cui il compilatore risolve il riferimento dipende da fattori quali la posizione dell'istruzione di codice e la presenza di una stringa di qualificazione. Questa caratteristica può aumentare il rischio di fare riferimento a una versione non desiderata di una variabile nascosta. È possibile ridurre tale rischio specificando in modo completo tutti i riferimenti a una variabile nascosta.

Vedere anche

Attività

Procedura: distinguere tra due elementi con lo stesso nome

Procedura: nascondere una variabile con lo stesso nome di un'altra variabile

Procedura: accedere a una variabile nascosta da una classe derivata

Concetti

Risoluzione di un riferimento quando più variabili hanno lo stesso nome

Shadowing in Visual Basic

Differenze tra shadowing e override

Riferimenti

Overrides

Altre risorse

Riferimenti a elementi dichiarati