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 |