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

Voir aussi