Niveles de acceso en Visual BasicAccess Levels in Visual Basic

El nivel de acceso de un elemento declarado es la extensión de la capacidad de obtener acceso a él, es decir, qué código tiene permiso para leer o escribir en él.The access level of a declared element is the extent of the ability to access it, that is, what code has permission to read it or write to it. Esto se determina no solo por cómo se declara el propio elemento, sino también por el nivel de acceso del contenedor del elemento.This is determined not only by how you declare the element itself, but also by the access level of the element's container. Código que no se puede obtener acceso a un elemento contenedor no puede tener acceso a cualquiera de los elementos contenidos, aunque se hayan declarado como Public.Code that cannot access a containing element cannot access any of its contained elements, even those declared as Public. Por ejemplo, un Public variable en un Private estructura se puede acceder desde dentro de la clase que contiene la estructura, pero no desde fuera de esa clase.For example, a Public variable in a Private structure can be accessed from inside the class that contains the structure, but not from outside that class.

PublicPublic

El pública palabra clave de la instrucción de declaración especifica que el elemento se puede acceder desde el código en cualquier lugar en el mismo proyecto, desde otros proyectos que hagan referencia al proyecto y de cualquier ensamblado compilado a partir del proyecto.The Public keyword in the declaration statement specifies that the element can be accessed from code anywhere in the same project, from other projects that reference the project, and from any assembly built from the project. El código siguiente muestra un ejemplo Public declaración.The following code shows a sample Public declaration.

Public Class classForEverybody  

Puede usar Public sólo en el nivel de módulo, interfaz o espacio de nombres.You can use Public only at module, interface, or namespace level. Esto significa que puede declarar un elemento público en el nivel de un archivo de código fuente o espacio de nombres, o dentro de una interfaz, módulo, clase o estructura, pero no en un procedimiento.This means you can declare a public element at the level of a source file or namespace, or inside an interface, module, class, or structure, but not in a procedure.

ProtegidoProtected

El Protected palabra clave de la instrucción de declaración especifica que el elemento se puede acceder solo desde dentro de la misma clase, o desde una clase derivada de esta clase.The Protected keyword in the declaration statement specifies that the element can be accessed only from within the same class, or from a class derived from this class. El código siguiente muestra un ejemplo Protected declaración.The following code shows a sample Protected declaration.

Protected Class classForMyHeirs  

Puede usar Protected solo en la clase de nivel y solo cuando se declara un miembro de una clase.You can use Protected only at class level, and only when you declare a member of a class. Esto significa que puede declarar un elemento protegido en una clase, pero no en el nivel de un archivo de código fuente o espacio de nombres, o dentro de una interfaz, módulo, estructura o procedimiento.This means you can declare a protected element in a class, but not at the level of a source file or namespace, or inside an interface, module, structure, or procedure.

FriendFriend

El Friend palabra clave de la instrucción de declaración especifica que el elemento se puede acceder desde dentro del mismo ensamblado, pero no desde fuera del ensamblado.The Friend keyword in the declaration statement specifies that the element can be accessed from within the same assembly, but not from outside the assembly. El código siguiente muestra un ejemplo Friend declaración.The following code shows a sample Friend declaration.

Friend stringForThisProject As String  

Puede usar Friend sólo en el nivel de módulo, interfaz o espacio de nombres.You can use Friend only at module, interface, or namespace level. Esto significa que puede declarar un elemento friend en el nivel de un archivo de código fuente o espacio de nombres, o dentro de una interfaz, módulo, clase o estructura, pero no en un procedimiento.This means you can declare a friend element at the level of a source file or namespace, or inside an interface, module, class, or structure, but not in a procedure.

Protected FriendProtected Friend

El Protected Friend combinación de palabras clave en la instrucción de declaración especifica que el elemento se puede acceder desde las clases derivadas o desde dentro del mismo ensamblado, o ambos.The Protected Friend keyword combination in the declaration statement specifies that the element can be accessed either from derived classes or from within the same assembly, or both. El código siguiente muestra un ejemplo Protected Friend declaración.The following code shows a sample Protected Friend declaration.

Protected Friend stringForProjectAndHeirs As String  

Puede usar Protected Friend solo en la clase de nivel y solo cuando se declara un miembro de una clase.You can use Protected Friend only at class level, and only when you declare a member of a class. Esto significa que puede declarar un elemento friend protegido en una clase, pero no en el nivel de un archivo de código fuente o espacio de nombres, o dentro de una interfaz, módulo, estructura o procedimiento.This means you can declare a protected friend element in a class, but not at the level of a source file or namespace, or inside an interface, module, structure, or procedure.

PrivatePrivate

El privada palabra clave de la instrucción de declaración especifica que el elemento se puede acceder solo desde dentro del mismo módulo, clase o estructura.The Private keyword in the declaration statement specifies that the element can be accessed only from within the same module, class, or structure. El código siguiente muestra un ejemplo Private declaración.The following code shows a sample Private declaration.

Private numberForMeOnly As Integer  

Solo se puede usar Private en un nivel de módulo.You can use Private only at module level. Esto significa que puede declarar un elemento privado dentro de un módulo, clase o estructura, pero no en el nivel de un archivo de código fuente o espacio de nombres dentro de una interfaz o en un procedimiento.This means you can declare a private element inside a module, class, or structure, but not at the level of a source file or namespace, inside an interface, or in a procedure.

En el nivel de módulo, el Dim instrucción sin las palabras clave de nivel de acceso es equivalente a un Private declaración.At the module level, the Dim statement without any access level keywords is equivalent to a Private declaration. Sin embargo, puede usar el Private palabra clave para que el código sea más fácil de leer e interpretar.However, you might want to use the Private keyword to make your code easier to read and interpret.

Private protegidaPrivate Protected

El Private Protected combinación de palabras clave en la instrucción de declaración especifica que el elemento se puede acceder solo desde dentro de la misma clase, así como de las clases derivadas que se encuentra en el mismo ensamblado que la clase contenedora.The Private Protected keyword combination in the declaration statement specifies that the element can be accessed only from within the same class, as well as from derived classes found in the same assembly as the containing class. El Private Protected modificador de acceso se admite a partir de Visual Basic 15.5.The Private Protected access modifier is supported starting with Visual Basic 15.5.

El ejemplo siguiente se muestra un Private Protected declaración:The following example shows a Private Protected declaration:

Private Protected internalValue As Integer

Puede declarar un Private Protected elemento solo dentro de una clase.You can declare a Private Protected element only inside of a class. No puede declarar dentro de una interfaz o estructura, ni puede declararla en el nivel de un archivo de código fuente o espacio de nombres dentro de una interfaz o una estructura o en un procedimiento.You cannot declare it within an interface or structure, nor can you declare it at the level of a source file or namespace, inside an interface or a structure, or in a procedure.

El Private Protected modificador de acceso es compatible con Visual Basic 15.5 y versiones posteriores.The Private Protected access modifier is supported by Visual Basic 15.5 and later. Para ello, agregue el siguiente elemento al archivo de proyecto (*.vbproj) de Visual Basic.To use it, you add the following element to your Visual Basic project (*.vbproj) file. Siempre que Visual Basic 15.5 o posterior esté instalado en el sistema, le permite aprovechar todas las características del lenguaje compatible con la versión más reciente del compilador de Visual Basic:As long as Visual Basic 15.5 or later is installed on your system, it lets you take advantage of all the language features supported by the latest version of the Visual Basic compiler:

<PropertyGroup>
   <LangVersion>latest</LangVersion>
</PropertyGroup>

Para usar el Private Protected modificador de acceso, debe agregar el elemento siguiente al archivo de proyecto (*.vbproj) de Visual Basic:To use the Private Protected access modifier, you must add the following element to your Visual Basic project (*.vbproj) file:

<PropertyGroup>
   <LangVersion>15.5</LangVersion>
</PropertyGroup>

Para obtener más información, consulte configuración de la versión de idioma de Visual Basic.For more information see setting the Visual Basic language version.

Modificadores de accesoAccess Modifiers

Las palabras clave que especifican el nivel de acceso se denominan modificadores de acceso.The keywords that specify access level are called access modifiers. En la tabla siguiente compara los modificadores de acceso.The following table compares the access modifiers.

Modificador de accesoAccess modifier Nivel de acceso concedidoAccess level granted Elementos que puede declarar con este nivel de accesoElements you can declare with this access level Contexto de declaración dentro del cual se puede usar este modificadorDeclaration context within which you can use this modifier
Public Sin restricciones:Unrestricted:

Cualquier código que puede ver un elemento público puede tener acceso a élAny code that can see a public element can access it
InterfacesInterfaces

MódulosModules

ClasesClasses

EstructurasStructures

Miembros de estructuraStructure members

ProcedimientosProcedures

PropiedadesProperties

Variables de miembroMember variables

ConstantesConstants

EnumeracionesEnumerations

EventosEvents

Declaraciones externasExternal declarations

DelegadosDelegates
Archivo de código fuenteSource file

Espacio de nombresNamespace

InterfazInterface

ModuleModule

ClaseClass

EstructuraStructure
Protected Por ejemplo:Derivational:

En la clase que declara un elemento protegido o una clase derivada de él, puede tener acceso al elemento de códigoCode in the class that declares a protected element, or a class derived from it, can access the element
InterfacesInterfaces

ClasesClasses

EstructurasStructures

ProcedimientosProcedures

PropiedadesProperties

Variables de miembroMember variables

ConstantesConstants

EnumeracionesEnumerations

EventosEvents

Declaraciones externasExternal declarations

DelegadosDelegates
ClaseClass
Friend Ensamblado:Assembly:

En el ensamblado que declara que un elemento friend puede tener acceso de códigoCode in the assembly that declares a friend element can access it
InterfacesInterfaces

MódulosModules

ClasesClasses

EstructurasStructures

Miembros de estructuraStructure members

ProcedimientosProcedures

PropiedadesProperties

Variables de miembroMember variables

ConstantesConstants

EnumeracionesEnumerations

EventosEvents

Declaraciones externasExternal declarations

DelegadosDelegates
Archivo de código fuenteSource file

Espacio de nombresNamespace

InterfazInterface

ModuleModule

ClaseClass

EstructuraStructure
Protected FriendProtected Friend Unión de Protected y Friend:Union of Protected and Friend:

En la misma clase o el mismo ensamblado como un elemento friend protegido o dentro de cualquier clase derivada de la clase del elemento de código, puede acceder a élCode in the same class or the same assembly as a protected friend element, or within any class derived from the element's class, can access it
InterfacesInterfaces

ClasesClasses

EstructurasStructures

ProcedimientosProcedures

PropiedadesProperties

Variables de miembroMember variables

ConstantesConstants

EnumeracionesEnumerations

EventosEvents

Declaraciones externasExternal declarations

DelegadosDelegates
ClaseClass
Private Contexto de declaración:Declaration context:

Código en el tipo que declara un elemento privado, incluido el código de los tipos contenidos, puede tener acceso al elementoCode in the type that declares a private element, including code within contained types, can access the element
InterfacesInterfaces

ClasesClasses

EstructurasStructures

Miembros de estructuraStructure members

ProcedimientosProcedures

PropiedadesProperties

Variables de miembroMember variables

ConstantesConstants

EnumeracionesEnumerations

EventosEvents

Declaraciones externasExternal declarations

DelegadosDelegates
ModuleModule

ClaseClass

EstructuraStructure
Private Protected En la clase que declara un elemento privado protegido, o código en una clase derivada, que se encuentra en el mismo ensamblado que la clase de bas.Code in the class that declares a private protected element, or code in a derived class found in the same assembly as the bas class. InterfacesInterfaces

ClasesClasses

EstructurasStructures

ProcedimientosProcedures

PropiedadesProperties

Variables de miembroMember variables

ConstantesConstants

EnumeracionesEnumerations

EventosEvents

Declaraciones externasExternal declarations

DelegadosDelegates
ClaseClass

Vea tambiénSee also