Compartilhar via


Níveis de acesso no Visual Basic

O nível de acesso de um elemento declarado é a extensão da capacidade de acessá-lo, ou seja, qual código tem permissão de leitura ou de gravação. Isso é determinado não apenas pela forma como você declara o elemento em si, mas também pelo nível de acesso do contêiner do elemento. O código que não pode acessar um elemento relativo não pode acessar nenhum dos elementos independentes, mesmo os declarados como Public. Por exemplo, uma variável Public em uma estrutura Private pode ser acessada de dentro da classe que contém a estrutura, mas não de fora dessa classe.

Público

A palavra-chave Público na instrução de declaração especifica que o elemento pode ser acessado a partir do código em qualquer lugar do mesmo projeto, em outros projetos que referenciam o projeto e em qualquer assembly criado a partir do projeto. O código a seguir mostra uma declaração Public de exemplo:

Public Class ClassForEverybody

Você só pode usar Public em nível de módulo, interface ou namespace. Isso significa que você pode declarar um elemento público no nível de um arquivo de origem ou namespace, ou dentro de uma interface, módulo, classe ou estrutura, mas não em um procedimento.

Protegido

A palavra-chave Protegido na instrução de declaração especifica que o elemento só pode ser acessado de dentro da mesma classe ou de uma classe derivada dessa classe. O código a seguir mostra uma declaração Protected de exemplo:

Protected Class ClassForMyHeirs

Você só pode usar Protected no nível da classe e somente quando declara um membro de uma classe. Isso significa que você pode declarar um elemento protegido em uma classe, mas não em um arquivo de origem ou namespace, ou dentro de uma interface, módulo, classe, estrutura ou procedimento.

Friend

A palavra-chave Friend na instrução de declaração especifica que o elemento pode ser acessado no mesmo assembly, mas não de fora do assembly. O código a seguir mostra uma declaração Friend de exemplo:

Friend stringForThisProject As String

Você só pode usar Friend em nível de módulo, interface ou namespace. Isso significa que você pode declarar um elemento friend no nível de um arquivo de origem ou namespace, ou dentro de uma interface, módulo, classe ou estrutura, mas não em um procedimento.

Amigo Protegido

A combinação de palavras-chave Friend Protegido na instrução de declaração especifica que o elemento pode ser acessado nas classes derivadas, no mesmo assembly ou em ambos. O código a seguir mostra uma declaração Protected Friend de exemplo:

Protected Friend stringForProjectAndHeirs As String

Você só pode usar Protected Friend no nível da classe e somente quando declara um membro de uma classe. Isso significa que você pode declarar um elemento friend em uma classe, mas não em um arquivo de origem ou namespace, ou dentro de uma interface, módulo, classe, estrutura ou procedimento.

Privado

A palavra-chave Privado na instrução de declaração especifica que o elemento só pode ser acessado no mesmo módulo, classe ou estrutura. O código a seguir mostra uma declaração Private de exemplo:

Private _numberForMeOnly As Integer

Você só pode usar Private no nível do módulo. Isso significa que você pode declarar um elemento privado dentro de um módulo, classe ou estrutura, mas não no nível de um arquivo de origem ou namespace, dentro de uma interface ou em um procedimento.

No nível do módulo, a instrução Dim sem palavras-chave de nível de acesso é equivalente a uma declaração Private. No entanto, talvez você queira usar a palavra-chave Private para facilitar a leitura e interpretação do código.

Protegido de forma particular

A combinação de palavras-chave Privado Protegido na instrução de declaração especifica que o elemento só pode ser acessado na mesma classe, bem como nas classes derivadas encontradas no mesmo assembly que a classe relativa. Há suporte para o modificador de acesso Private Protected a partir do Visual Basic 15.5.

O exemplo a seguir mostra uma declaração Private Protected:

Private Protected internalValue As Integer

Você pode declarar um elemento Private Protected somente dentro de uma classe. Não é possível declará-lo em uma interface ou estrutura, nem no nível de um arquivo de origem ou namespace, dentro de uma interface ou uma estrutura, ou em um procedimento.

Há suporte para o modificador de acesso Private Protected no Visual Basic 15.5 e posterior. Para usá-lo, adicione o seguinte elemento ao arquivo de projeto do Visual Basic (*.vbproj). Contanto que o Visual Basic 15.5 ou posterior esteja instalado no sistema, ele permite aproveitar todos os recursos de linguagem compatíveis com a versão mais recente do compilador do Visual Basic:

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

Para usar o modificador de acesso Private Protected, você deve adicionar o seguinte elemento ao arquivo de projeto do Visual Basic (*.vbproj):

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

Para obter mais informações, confira Configuração da versão de linguagem do Visual Basic.

Modificadores de acesso

As palavras-chave que especificam o nível de acesso são chamadas de modificadores de acesso. A tabela a seguir compara os modificadores de acesso:

Modificador de acesso Nível de acesso concedido Elementos que você pode declarar com esse nível de acesso Contexto de declaração em que você pode usar esse modificador
Public Irrestrito:

Qualquer código que possa ver um elemento público pode acessá-lo
Interfaces

Módulos

Classes

Estruturas

Membros de estrutura

Procedimentos

Propriedades

Variáveis de membro

Constantes

Enumerações

Eventos

Declarações externas

Delegados
Arquivo de origem

Namespace

Interface

Módulo

Classe

Estrutura
Protected Derivacional:

O código na classe que declara um elemento protegido ou uma classe derivada dele pode acessar o elemento
Interfaces

Classes

Estruturas

Procedimentos

Propriedades

Variáveis de membro

Constantes

Enumerações

Eventos

Declarações externas

Delegados
Classe
Friend Assembly:

O código no assembly que declara que um elemento friend pode acessá-lo
Interfaces

Módulos

Classes

Estruturas

Membros de estrutura

Procedimentos

Propriedades

Variáveis de membro

Constantes

Enumerações

Eventos

Declarações externas

Delegados
Arquivo de origem

Namespace

Interface

Módulo

Classe

Estrutura
Protected Friend União de Protected e Friend:

O código na mesma classe ou no mesmo assembly que um elemento friend protegido ou em qualquer classe derivada da classe do elemento pode acessá-lo
Interfaces

Classes

Estruturas

Procedimentos

Propriedades

Variáveis de membro

Constantes

Enumerações

Eventos

Declarações externas

Delegados
Classe
Private Contexto da declaração:

O código no tipo que declara um elemento privado, incluindo o código dentro dos tipos independentes, pode acessar o elemento
Interfaces

Classes

Estruturas

Membros de estrutura

Procedimentos

Propriedades

Variáveis de membro

Constantes

Enumerações

Eventos

Declarações externas

Delegados
Módulo

Classe

Estrutura
Private Protected O código na classe que declara um elemento privado protegido ou o código em uma classe derivada encontrada no mesmo assembly que a classe base. Interfaces

Classes

Estruturas

Procedimentos

Propriedades

Variáveis de membro

Constantes

Enumerações

Eventos

Declarações externas

Delegados
Classe

Confira também