Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 masquer cet élément de classe de base lorsque vous définissez votre variable dans la classe dérivée. Si vous effectuez cette opération, le code de la classe dérivée accède à votre variable, sauf si elle contourne explicitement le mécanisme d’ombre.
Une autre raison pour laquelle vous souhaiterez peut-être masquer une variable héritée consiste à vous protéger contre la révision de classe de base. La classe de base peut subir une modification qui modifie l’élément que vous héritez. Dans ce cas, le modificateur force les Shadows
références de la classe dérivée à être résolues vers votre variable, plutôt que l'élément de la classe de base.
Pour masquer une variable héritée
Vérifiez que la variable que vous souhaitez masquer est déclarée au niveau de la classe (en dehors de toute procédure). Sinon, vous n’avez pas besoin de le masquer.
Dans votre classe dérivée, écrivez une instruction Dim déclarant votre variable. Utilisez le même nom que celui de la variable héritée.
Incluez le mot clé Shadows 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 à votre variable.
L’exemple suivant illustre l’ombre 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 l’ombre dans la classe dérivée. La procédureShowStrings
de la classe dérivée affiche la version d’ombre de la chaîne lorsque le nomshadowString
n’est pas qualifié. Il affiche ensuite la version ombrée lorsqu’elleshadowString
est qualifiée avec leMyBase
mot clé.
Programmation fiable
L’ombre introduit plusieurs versions d’une variable portant le même nom. Lorsqu’une instruction de code fait référence au nom de la variable, la version à laquelle le compilateur résout la référence dépend de facteurs tels que l’emplacement de l’instruction de code et la présence d’une chaîne éligible. Cela peut augmenter le risque de faire référence à une version involontaire d’une variable ombrée. Vous pouvez réduire ce risque en qualifiant entièrement toutes les références à une variable masquée.
Voir aussi
- Références aux éléments déclarés
- Ombre dans Visual Basic
- Différences entre l'occultation et la substitution
- Guide pratique pour masquer une variable portant le même nom que votre variable
- Guide pratique pour accéder à une variable masquée par une classe dérivée
- Substitutions
- Moi, My, MyBase et MyClass
- Principes de base de l’héritage