Niveles de acceso en Visual Basic

Actualización: noviembre 2007

El nivel de acceso de un elemento declarado es la extensión de la capacidad de acceso a él; es decir, qué código tiene permiso para leer o escribir en él. Está determinado no solamente por cómo se declara el propio elemento, sino también por la nivel de acceso del contenedor del elemento. El código que no puede tener acceso a un elemento contenedor no puede tener acceso a ninguno de sus elementos contenedores, incluso aquéllos declarados como Public. Por ejemplo, se puede tener acceso a una variable Public de una estructura Private desde dentro de la clase que contiene la estructura, pero no desde fuera.

Public

La palabra clave Public (Visual Basic) de la instrucción de declaración especifica que se puede tener acceso a los elementos desde el código en cualquier parte del mismo proyecto, desde otros proyectos que hagan referencia al proyecto y desde un ensamblado generado a partir del proyecto. El código siguiente muestra un ejemplo de declaración Public.

Public Class classForEverybody

Puede utilizar Public solamente en el nivel de módulo, interfaz o espacio de nombres. Es decir, puede declarar un elemento público en el nivel de archivo de código fuente o espacio de nombres o dentro de una interfaz, módulo, clase o estructura, pero no dentro de un procedimiento.

Protected

La palabra clave Protected (Visual Basic) de la instrucción de declaración especifica que sólo se puede tener acceso a los elementos desde dentro de la misma clase o desde una clase derivada de ella. El código siguiente muestra un ejemplo de declaración Protected.

Protected Class classForMyHeirs

Sólo puede usar Protected en el nivel de clase y sólo al declarar un miembro de una clase.Es decir, puede declarar un elemento protegido en una clase, pero no en el nivel de archivo de código fuente o espacio de nombres, o dentro de una interfaz, módulo, estructura o procedimiento.

Friend

La palabra clave Friend (Visual Basic) en la instrucción de declaración especifica que se puede tener acceso a los elementos desde dentro del mismo ensamblado, pero no desde fuera del ensamblado. El código siguiente muestra un ejemplo de declaración Friend.

Friend stringForThisProject As String

Puede utilizar Friend solamente en el nivel de módulo, interfaz o espacio de nombres. Es decir, puede declarar un elemento Friend en el nivel de archivo de código fuente o espacio de nombres o dentro de una interfaz, módulo, clase o estructura, pero no dentro de un procedimiento.

Protected Friend

Las palabras clave Protected y Friend juntas en la instrucción de declaración especifican que se puede tener acceso a los elementos desde las clases derivadas, desde dentro del mismo ensamblado o ambos. El código siguiente muestra un ejemplo de declaración ProtectedFriend.

Protected Friend stringForProjectAndHeirs As String

Sólo puede usar FriendProtected en el nivel de clase y sólo al declarar un miembro de una clase.Es decir, puede declarar un elemento de tipo Protected Friend en una clase, pero no en el nivel de archivo de código fuente o espacio de nombres, o dentro de una interfaz, módulo, estructura o procedimiento.

Private

La palabra clave Private (Visual Basic) de la instrucción de declaración especifica que sólo se puede tener acceso a los elementos desde dentro del mismo módulo, clase o estructura. El código siguiente muestra un ejemplo de declaración Private.

Private numberForMeOnly As Integer

Sólo puede utilizar Private en el nivel de módulo. Es decir, puede declarar un elemento privado dentro de un módulo, clase o estructura, pero no en el nivel de archivo de código fuente o espacio de nombres, dentro de una interfaz o un procedimiento.

En el nivel de módulo, la instrucción Dim sin ninguna palabra clave de nivel de acceso es equivalente a una declaración Private. No obstante, podría convenirle usar la palabra clave Private para facilitar la lectura y la interpretación del código.

Modificadores de acceso

Las palabras clave que especifican el nivel de acceso se llaman modificadores de acceso. La tabla siguiente compara los modificadores de acceso.

Modificador de acceso

Nivel de acceso concedido

Elementos que puede declarar con este nivel de acceso

Contexto de declaración dentro de cual puede utilizar este modificador

Public

Sin restricciones:

Cualquier código que puede ver un elemento público puede tener acceso a él.

Interfaces

Módulos

Clases

Estructuras

Miembros de estructura

Procedimientos

Propiedades

Variables miembros

Constantes

Enumeraciones

Eventos

Declaraciones externas

Delegados

Archivo de código fuente

Espacio de nombres

Interfaz

Módulo

Clase

Estructura

Protected

De derivación:

El código de la clase que declara un elemento protegido, o una clase derivada de él, puede tener acceso al elemento.

Interfaces

Clases

Estructuras

Procedimientos

Propiedades

Variables miembros

Constantes

Enumeraciones

Eventos

Declaraciones externas

Delegados

Clase

Friend

Ensamblado:

El código del ensamblado que declara un elemento de tipo Friend puede tener acceso a él.

Interfaces

Módulos

Clases

Estructuras

Miembros de estructura

Procedimientos

Propiedades

Variables miembros

Constantes

Enumeraciones

Eventos

Declaraciones externas

Delegados

Archivo de código fuente

Espacio de nombres

Interfaz

Módulo

Clase

Estructura

ProtectedFriend

Unión de Protected y Friend:

El código de la misma clase o el mismo ensamblado que el elemento de tipo Protected Friend o aquel que está dentro de cualquier clase derivada de la clase del elemento, puede tener acceso a él.

Interfaces

Clases

Estructuras

Procedimientos

Propiedades

Variables miembros

Constantes

Enumeraciones

Eventos

Declaraciones externas

Delegados

Clase

Private

Contexto de declaración:

El código del tipo que declara un elemento privado, incluido el código de los tipos contenidos, puede tener acceso al elemento.

Interfaces

Clases

Estructuras

Miembros de estructura

Procedimientos

Propiedades

Variables miembros

Constantes

Enumeraciones

Eventos

Declaraciones externas

Delegados

Módulo

Clase

Estructura

Vea también

Tareas

Cómo: Controlar la disponibilidad de una variable

Conceptos

Nombres de elementos declarados

Características de los elementos declarados

Período de duración en Visual Basic

Ámbito en Visual Basic

Variables en Visual Basic

Declaración de variable en Visual Basic

Referencia

Instrucción Dim (Visual Basic)

Static (Visual Basic)

Otros recursos

Referencias a elementos declarados