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

Consulte também