Niveaux d'accès dans Visual Basic
Le niveau d’accès d’un élément déclaré est l’étendue de la possibilité d’y accéder, c’est-à-dire ce que le code a l’autorisation de lire ou d’écrire dans celui-ci. Ceci est déterminé non seulement par la façon dont vous déclarez l’élément lui-même, mais également par le niveau d’accès du conteneur de l’élément. Le code qui ne peut pas accéder à un élément conteneur ne peut accéder à aucun de ses éléments contenus, même ceux déclarés en tant que Public
. Par exemple, une variable Public
dans une structure Private
est accessible à partir de la classe qui contient la structure, mais pas à partir de l’extérieur de cette classe.
Public
Le mot clé Public dans l’instruction de déclaration spécifie que l’élément est accessible à partir du code n’importe où dans le même projet, à partir d’autres projets qui référencent le projet et à partir de n’importe quel assembly généré à partir du projet. Le code suivant montre un exemple de déclaration Public
:
Public Class ClassForEverybody
Vous pouvez utiliser Public
uniquement au niveau du module, de l’interface ou de l’espace de noms. Cela signifie que vous pouvez déclarer un élément public au niveau d’un fichier ou d’un espace de noms source, ou à l’intérieur d’une interface, d’un module, d’une classe ou d’une structure, mais pas dans une procédure.
Protected
Le mot clé Protected dans l’instruction de déclaration spécifie que l’élément est accessible uniquement à partir de la même classe ou d’une classe dérivée de cette classe. Le code suivant montre un exemple de déclaration Protected
:
Protected Class ClassForMyHeirs
Vous ne pouvez utiliser Protected
qu’au niveau de la classe et uniquement lorsque vous déclarez un membre d’une classe. Cela signifie que vous pouvez déclarer un élément protégé dans une classe, mais pas au niveau d’un fichier source ou d’un espace de noms, ou à l’intérieur d’une interface, d’un module, d’une structure ou d’une procédure.
Friend
Le mot clé Friend dans l’instruction de déclaration spécifie que l’élément est accessible à partir du même assembly, mais pas à partir de l’extérieur de l’assembly. Le code suivant montre un exemple de déclaration Friend
:
Friend stringForThisProject As String
Vous pouvez utiliser Friend
uniquement au niveau du module, de l’interface ou de l’espace de noms. Cela signifie que vous pouvez déclarer un élément friend au niveau d’un fichier ou d’un espace de noms source, ou à l’intérieur d’une interface, d’un module, d’une classe ou d’une structure, mais pas dans une procédure.
Protected Friend
La combinaison de mots clés Protected Friend dans l’instruction de déclaration spécifie que l’élément est accessible à partir de classes dérivées ou à partir du même assembly, ou des deux. Le code suivant montre un exemple de déclaration Protected Friend
:
Protected Friend stringForProjectAndHeirs As String
Vous ne pouvez utiliser Protected Friend
qu’au niveau de la classe et uniquement lorsque vous déclarez un membre d’une classe. Cela signifie que vous pouvez déclarer un élément friend protégé dans une classe, mais pas au niveau d’un fichier source ou d’un espace de noms, ou à l’intérieur d’une interface, d’un module, d’une structure ou d’une procédure.
Privées
Le mot clé Private dans l’instruction de déclaration spécifie que l’élément est accessible uniquement à partir du même module, classe ou structure. Le code suivant montre un exemple de déclaration Private
:
Private _numberForMeOnly As Integer
Vous pouvez utiliser Private
seulement au niveau du module. Cela signifie que vous pouvez déclarer un élément privé à l’intérieur d’un module, d’une classe ou d’une structure, mais pas au niveau d’un fichier source ou d’un espace de noms, à l’intérieur d’une interface ou dans une procédure.
Au niveau du module, l’instruction Dim
sans mots clés de niveau d’accès équivaut à une déclaration Private
. Toutefois, vous pouvez utiliser le mot clé Private
pour faciliter la lecture et l’interprétation de votre code.
Private Protected
La combinaison de mots clés Private Protected dans l’instruction de déclaration spécifie que l’élément est accessible uniquement à partir de la même classe, ainsi que des classes dérivées trouvées dans le même assembly que la classe conteneur. Le modificateur d’accès Private Protected
est pris en charge à partir de Visual Basic 15.5.
L’exemple suivant illustre une déclaration Private Protected
:
Private Protected internalValue As Integer
Vous ne pouvez déclarer un élément Private Protected
qu'à l'intérieur d'une classe. Vous ne pouvez pas le déclarer dans une interface ou une structure, ni au niveau d’un fichier ou d’un espace de noms source, à l’intérieur d’une interface ou d’une structure, ou dans une procédure.
Le modificateur d’accès Private Protected
est pris en charge par Visual Basic 15.5 et versions ultérieures. Pour l’utiliser, vous devez ajouter l’élément suivant à votre fichier de projet Visual Basic (*.vbproj). Tant que Visual Basic 15.5 ou version ultérieure est installé sur votre système, il vous permet de tirer parti de toutes les fonctionnalités du langage, prises en charge par la dernière version du compilateur Visual Basic :
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
Pour utiliser le modificateur d’accès Private Protected
, vous devez ajouter l’élément suivant à votre fichier de projet Visual Basic (*.vbproj) :
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Pour plus d’informations, consultez Définir la version du langage Visual Basic.
Modificateurs d’accès
Les mots clés qui spécifient le niveau d’accès sont appelés modificateurs d’accès. Le tableau suivant compare les modificateurs d’accès :
Modificateur d’accès | Niveau d’accès accordé | Éléments que vous pouvez déclarer avec ce niveau d’accès | Contexte de déclaration dans lequel vous pouvez utiliser ce modificateur |
---|---|---|---|
Public |
Non restreint : Tout code qui peut voir un élément public peut y accéder |
Interfaces Modules Classes Structures Membres de structures Procédures Propriétés Variables membres Constantes Énumérations Événements Déclarations externes Délégués |
Fichier source Espace de noms Interface Module Classe Structure |
Protected |
Dérivationnel : Le code dans la classe qui déclare un élément protégé, ou une classe dérivée de celui-ci, peut accéder à l’élément |
Interfaces Classes Structures Procédures Propriétés Variables membres Constantes Énumérations Événements Déclarations externes Délégués |
Classe |
Friend |
Assembly : Code dans l’assembly qui déclare un élément friend peut y accéder |
Interfaces Modules Classes Structures Membres de structures Procédures Propriétés Variables membres Constantes Énumérations Événements Déclarations externes Délégués |
Fichier source Espace de noms Interface Module Classe Structure |
Protected Friend |
Union de Protected et Friend :Le code dans la même classe ou le même assembly qu’un élément friend protégé, ou dans n’importe quelle classe dérivée de la classe de l’élément, peut y accéder |
Interfaces Classes Structures Procédures Propriétés Variables membres Constantes Énumérations Événements Déclarations externes Délégués |
Classe |
Private |
Contexte de déclaration : Le code dans le type qui déclare un élément privé, y compris du code dans des types contenus, peut accéder à l’élément |
Interfaces Classes Structures Membres de structures Procédures Propriétés Variables membres Constantes Énumérations Événements Déclarations externes Délégués |
Module Classe Structure |
Private Protected |
Code dans la classe qui déclare un élément protégé privé ou du code dans une classe dérivée trouvée dans le même assembly que la classe bas. | Interfaces Classes Structures Procédures Propriétés Variables membres Constantes Énumérations Événements Déclarations externes Délégués |
Classe |