Partager via


Comment : masquer une variable héritée (Visual Basic)

Une classe dérivée hérite de toutes les définitions de sa classe de base. Si vous souhaitez définir une variable à l'aide du même nom qu'un élément de la classe de base, vous pouvez masquer (ou occulter) cet élément de classe de base lorsque vous définissez votre variable dans la classe dérivée. Si vous procédez ainsi, le code de la classe dérivée accède à votre variable à moins qu'il n'outrepasse de manière explicite le mécanisme occultant.

L'une des autres raisons pour lesquelles vous pourriez souhaiter masquer une variable héritée serait pour la protéger de la révision de classe de base. La classe de base peut subir une modification qui altère l'élément dont vous héritez. Si cela se produit, le modificateur Shadows force les références de la classe dérivée à être résolues vers votre variable plutôt que vers l'élément de classe de base.

Pour masquer une variable héritée

  1. Assurez-vous que la variable à masquer est déclarée au niveau de la classe (en dehors de toute procédure). Autrement, il n'est pas nécessaire de la masquer.

  2. À l'intérieur de votre classe dérivée, écrivez une Dim, instruction (Visual Basic) qui déclare votre variable. Utilisez le même nom que celui de la variable héritée.

  3. Incluez le mot clé Shadows (Visual Basic) dans la déclaration.

    Lorsque le code de la classe dérivée fait référence au nom de la variable, le compilateur résout la référence vers votre variable.

    L'exemple suivant illustre l'occultation d'une variable héritée.

    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
    

    L'exemple précédent déclare la variable shadowString dans la classe de base et la masque dans la classe dérivée. La procédure showStrings dans la classe dérivée affiche la version occultante de la chaîne lorsque le nom shadowString n'est pas qualifié. Elle affiche ensuite la version occultée lorsque shadowString est qualifié avec le mot clé MyBase.

Programmation fiable

L'occultation introduit plusieurs versions d'une variable avec le même nom. Lorsqu'une instruction de code fait référence au nom de la variable, la version vers laquelle le compilateur résout la référence dépend de plusieurs facteurs, tels que l'emplacement de l'instruction de code et la présence d'une chaîne qualifiante. Cela peut augmenter le risque de référence à une version non souhaitée d'une variable occultée. Vous pouvez réduire ce risque en qualifiant complètement toutes les références à une variable occultée.

Voir aussi

Tâches

Comment : masquer une variable portant le même nom que votre variable (Visual Basic)

Comment : accéder à une variable masquée par une classe dérivée (Visual Basic)

Référence

Overrides (Visual Basic)

Concepts

Occultation dans Visual Basic

Différences entre l'occultation et la substitution (Visual Basic)

Me, My, MyBase et MyClass dans Visual Basic

Éléments fondamentaux de l'héritage (Visual Basic)

Autres ressources

Références aux éléments déclarés (Visual Basic)