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 para lê-lo ou gravá-lo. 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 que contém não pode acessar nenhum de seus elementos contidos, mesmo aqueles declarados como Public
. Por exemplo, uma Public
variável em uma Private
estrutura pode ser acessada de dentro da classe que contém a estrutura, mas não de fora dessa classe.
Público
A palavra-chave Public na instrução statement especifica que o elemento pode ser acessado a partir do código em qualquer lugar no mesmo projeto, de outros projetos que fazem referência ao projeto e de qualquer assembly criado a partir do projeto. O código a seguir mostra uma declaração de exemplo Public
:
Public Class ClassForEverybody
Você pode usar Public
somente no 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 Protected na instrução statement especifica que o elemento pode ser acessado somente de dentro da mesma classe ou de uma classe derivada dessa classe. O código a seguir mostra uma declaração de exemplo Protected
:
Protected Class ClassForMyHeirs
Você pode usar Protected
somente no nível da classe e somente quando declarar um membro de uma classe. Isso significa que você pode declarar um elemento protegido em uma classe, mas não no nível de um arquivo de origem ou namespace, ou dentro de uma interface, módulo, estrutura ou procedimento.
Amigo
A palavra-chave Friend na instrução de declaração especifica que o elemento pode ser acessado de dentro do mesmo assembly, mas não de fora do assembly. O código a seguir mostra uma declaração de exemplo Friend
:
Friend stringForThisProject As String
Você pode usar Friend
somente no nível de módulo, interface ou namespace. Isso significa que você pode declarar um elemento amigo 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 Protected Friend na instrução statement especifica que o elemento pode ser acessado a partir de classes derivadas ou de dentro do mesmo assembly, ou ambos. O código a seguir mostra uma declaração de exemplo Protected Friend
:
Protected Friend stringForProjectAndHeirs As String
Você pode usar Protected Friend
somente no nível da classe e somente quando declarar um membro de uma classe. Isso significa que você pode declarar um elemento amigo protegido em uma classe, mas não no nível de um arquivo de origem ou namespace, ou dentro de uma interface, módulo, estrutura ou procedimento.
Privado
A palavra-chave Private na instrução statement especifica que o elemento pode ser acessado somente de dentro do mesmo módulo, classe ou estrutura. O código a seguir mostra uma declaração de exemplo Private
:
Private _numberForMeOnly As Integer
Você pode usar Private
apenas 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 Dim
instrução sem palavras-chave de nível de acesso é equivalente a uma Private
declaração. No entanto, você pode querer usar a Private
palavra-chave para tornar seu código mais fácil de ler e interpretar.
Privado Protegido
A combinação de palavras-chave Private Protected na instrução statement especifica que o elemento pode ser acessado somente de dentro da mesma classe, bem como de classes derivadas encontradas no mesmo assembly que a classe que contém. O Private Protected
modificador de acesso é suportado a partir do Visual Basic 15.5.
O exemplo a seguir mostra uma Private Protected
declaração:
Private Protected internalValue As Integer
Você pode declarar um Private Protected
elemento somente dentro de uma classe. Você não pode declará-lo dentro de uma interface ou estrutura, nem pode declará-lo no nível de um arquivo de origem ou namespace, dentro de uma interface ou estrutura, ou em um procedimento.
O Private Protected
modificador de acesso é suportado pelo Visual Basic 15.5 e posterior. Para usá-lo, adicione o seguinte elemento ao seu arquivo de projeto do Visual Basic (*.vbproj). Contanto que o Visual Basic 15.5 ou posterior esteja instalado em seu sistema, ele permite que você aproveite todos os recursos de linguagem suportados pela versão mais recente do compilador do Visual Basic:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
Para usar o modificador de Private Protected
acesso, você deve adicionar o seguinte elemento ao seu arquivo de projeto do Visual Basic (*.vbproj):
<PropertyGroup>
<LangVersion>15.5</LangVersion>
</PropertyGroup>
Para obter mais informações, consulte a configuração da versão da linguagem 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 este nível de acesso | Contexto da declaração no qual você pode usar esse modificador |
---|---|---|---|
Public |
Sem restrições: Qualquer código que possa ver um elemento público pode acessá-lo |
Interfaces Módulos Classes Estruturas Membros da estrutura Procedimentos Propriedades Variáveis de membro Constantes Enumerações evento Declarações externas Delegados |
Ficheiro de origem Espaço de Nomes 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 evento Declarações externas Delegados |
Classe |
Friend |
Montagem: O código no assembly que declara um elemento amigo pode acessá-lo |
Interfaces Módulos Classes Estruturas Membros da estrutura Procedimentos Propriedades Variáveis de membro Constantes Enumerações evento Declarações externas Delegados |
Ficheiro de origem Espaço de Nomes 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 amigo protegido, ou dentro de qualquer classe derivada da classe do elemento, pode acessá-lo |
Interfaces Classes Estruturas Procedimentos Propriedades Variáveis de membro Constantes Enumerações evento Declarações externas Delegados |
Classe |
Private |
Contexto da declaração: Código no tipo que declara um elemento privado, incluindo código dentro de tipos contidos, pode acessar o elemento |
Interfaces Classes Estruturas Membros da estrutura Procedimentos Propriedades Variáveis de membro Constantes Enumerações evento Declarações externas Delegados |
Módulo Classe Estrutura |
Private Protected |
Código na classe que declara um elemento privado protegido, ou código em uma classe derivada encontrada no mesmo assembly que a classe bas. | Interfaces Classes Estruturas Procedimentos Propriedades Variáveis de membro Constantes Enumerações evento Declarações externas Delegados |
Classe |