Níveis de acesso no Visual BasicAccess Levels in Visual Basic

O nível de acesso de um elemento declarado é a extensão da habilidade para acessá-lo, ou seja, o que o código tem permissão para ler ou gravar nele.The access level of a declared element is the extent of the ability to access it, that is, what code has permission to read it or write to it. Isso é determinado não apenas por como você declarar o elemento em si, mas também pelo nível de acesso do contêiner do elemento.This is determined not only by how you declare the element itself, but also by the access level of the element's container. Código que não é possível acessar um elemento contendo não pode acessar qualquer um de seus elementos contidos, mesmo aqueles declarados como Public.Code that cannot access a containing element cannot access any of its contained elements, even those declared as Public. Por exemplo, uma Public variável em um Private estrutura pode ser acessada de dentro da classe que contém a estrutura, mas não de fora dessa classe.For example, a Public variable in a Private structure can be accessed from inside the class that contains the structure, but not from outside that class.

PúblicoPublic

O pública palavra-chave na instrução de declaração especifica que o elemento pode ser acessado de código em qualquer lugar no mesmo projeto, de outros projetos que referenciem o projeto e de qualquer assembly criado a partir do projeto.The Public keyword in the declaration statement specifies that the element can be accessed from code anywhere in the same project, from other projects that reference the project, and from any assembly built from the project. O código a seguir mostra um exemplo Public declaração.The following code shows a sample Public declaration.

Public Class classForEverybody  

Você pode usar Public apenas no nível de namespace ou módulo.You can use Public only at module, interface, or namespace level. 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.This means you can declare a public element at the level of a source file or namespace, or inside an interface, module, class, or structure, but not in a procedure.

ProtegidoProtected

O Protected palavra-chave na instrução de declaração especifica que o elemento pode ser acessado somente de dentro da mesma classe ou de uma classe que deriva dessa classe.The Protected keyword in the declaration statement specifies that the element can be accessed only from within the same class, or from a class derived from this class. O código a seguir mostra um exemplo Protected declaração.The following code shows a sample Protected declaration.

Protected Class classForMyHeirs  

Você pode usar Protected apenas na classe de nível e somente quando você declara um membro de uma classe.You can use Protected only at class level, and only when you declare a member of a class. 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.This means you can declare a protected element in a class, but not at the level of a source file or namespace, or inside an interface, module, structure, or procedure.

FriendFriend

O amigo palavra-chave 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.The Friend keyword in the declaration statement specifies that the element can be accessed from within the same assembly, but not from outside the assembly. O código a seguir mostra um exemplo Friend declaração.The following code shows a sample Friend declaration.

Friend stringForThisProject As String  

Você pode usar Friend apenas no nível de namespace ou módulo.You can use Friend only at module, interface, or namespace level. Isso significa que você pode declarar um elemento de 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.This means you can declare a friend element at the level of a source file or namespace, or inside an interface, module, class, or structure, but not in a procedure.

Friend protegidoProtected Friend

O Protected Friend combinação de palavra-chave na instrução de declaração especifica que o elemento pode ser acessado de classes derivadas ou de dentro do mesmo assembly, ou ambos.The Protected Friend keyword combination in the declaration statement specifies that the element can be accessed either from derived classes or from within the same assembly, or both. O código a seguir mostra um exemplo Protected Friend declaração.The following code shows a sample Protected Friend declaration.

Protected Friend stringForProjectAndHeirs As String  

Você pode usar Protected Friend apenas na classe de nível e somente quando você declara um membro de uma classe.You can use Protected Friend only at class level, and only when you declare a member of a class. Isso significa que você pode declarar um elemento de 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.This means you can declare a protected friend element in a class, but not at the level of a source file or namespace, or inside an interface, module, structure, or procedure.

ParticularPrivate

O privada palavra-chave na instrução de declaração especifica que o elemento pode ser acessado somente de dentro do mesmo módulo, classe ou estrutura.The Private keyword in the declaration statement specifies that the element can be accessed only from within the same module, class, or structure. O código a seguir mostra um exemplo Private declaração.The following code shows a sample Private declaration.

Private numberForMeOnly As Integer  

Você pode usar Private apenas no nível de módulo.You can use Private only at module level. 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.This means you can declare a private element inside a module, class, or structure, but not at the level of a source file or namespace, inside an interface, or in a procedure.

No nível de módulo, o Dim instrução sem qualquer acesso de nível palavras-chave é equivalente a um Private declaração.At the module level, the Dim statement without any access level keywords is equivalent to a Private declaration. No entanto, você talvez queira usar o Private palavra-chave para tornar seu código mais fácil de ler e interpretar.However, you might want to use the Private keyword to make your code easier to read and interpret.

Privado protegidoPrivate Protected

O Private Protected combinação de palavra-chave na instrução de declaração especifica que o elemento pode ser acessado somente de dentro da mesma classe, bem como encontradas no mesmo assembly que a classe que contém as classes derivadas.The Private Protected keyword combination in the declaration statement specifies that the element can be accessed only from within the same class, as well as from derived classes found in the same assembly as the containing class. O Private Protected há suporte para o modificador de acesso a partir do Visual Basic 15.5.The Private Protected access modifier is supported starting with Visual Basic 15.5.

A exemplo a seguir mostra um Private Protected declaração:The following example shows a Private Protected declaration:

Private Protected internalValue As Integer

Você pode declarar um Private Protected elemento dentro de uma classe.You can declare a Private Protected element only inside of a class. Você não pode declará-la dentro de uma estrutura ou interface, nem você declará-la no nível de um arquivo de origem ou namespace, dentro de uma interface ou uma estrutura ou em um procedimento.You cannot declare it within an interface or structure, nor can you declare it at the level of a source file or namespace, inside an interface or a structure, or in a procedure.

O Private Protected modificador de acesso é suportado pelo Visual Basic 15.5 e posteriores.The Private Protected access modifier is supported by Visual Basic 15.5 and later. Para usá-lo, você pode adicionar o seguinte elemento ao seu arquivo de projeto (*. vbproj) do Visual Basic.To use it, you add the following element to your Visual Basic project (*.vbproj) file. Como desde que o Visual Basic 15.5 ou posterior estiver instalado no seu sistema, ele permite que você aproveite todos os recursos de idioma com suporte pela versão mais recente do compilador do Visual Basic:As long as Visual Basic 15.5 or later is installed on your system, it lets you take advantage of all the language features supported by the latest version of the Visual Basic compiler:

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

Para usar o Private Protected modificador de acesso, você deve adicionar o seguinte elemento ao seu arquivo de projeto (*. vbproj) do Visual Basic:To use the Private Protected access modifier, you must add the following element to your Visual Basic project (*.vbproj) file:

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

Para obter mais informações, consulte definindo a versão da linguagem Visual Basic.For more information see setting the Visual Basic language version.

Modificadores de acessoAccess Modifiers

As palavras-chave que especificam o nível de acesso são chamadas modificadores de acesso.The keywords that specify access level are called access modifiers. A tabela a seguir compara os modificadores de acesso.The following table compares the access modifiers.

Modificador de acessoAccess modifier Nível de acesso concedidoAccess level granted Elementos que você pode declarar com esse nível de acessoElements you can declare with this access level Contexto de declaração dentro da qual você pode usar esse modificadorDeclaration context within which you can use this modifier
Public Irrestrito:Unrestricted:

Qualquer código que pode ver um elemento público pode acessá-loAny code that can see a public element can access it
InterfacesInterfaces

MódulosModules

ClassesClasses

EstruturasStructures

Membros de estruturaStructure members

ProcedimentosProcedures

PropriedadesProperties

Variáveis de membroMember variables

ConstantesConstants

EnumeraçõesEnumerations

EventosEvents

Declarações externasExternal declarations

DelegadosDelegates
Arquivo de origemSource file

NamespaceNamespace

InterfaceInterface

MóduloModule

ClasseClass

EstruturaStructure
Protected Derivacionais:Derivational:

A classe que declara um elemento protegido, ou uma classe derivada dele, pode acessar o elemento de códigoCode in the class that declares a protected element, or a class derived from it, can access the element
InterfacesInterfaces

ClassesClasses

EstruturasStructures

ProcedimentosProcedures

PropriedadesProperties

Variáveis de membroMember variables

ConstantesConstants

EnumeraçõesEnumerations

EventosEvents

Declarações externasExternal declarations

DelegadosDelegates
ClasseClass
Friend Assembly:Assembly:

O código no assembly que declara que um elemento de amigo pode acessá-loCode in the assembly that declares a friend element can access it
InterfacesInterfaces

MódulosModules

ClassesClasses

EstruturasStructures

Membros de estruturaStructure members

ProcedimentosProcedures

PropriedadesProperties

Variáveis de membroMember variables

ConstantesConstants

EnumeraçõesEnumerations

EventosEvents

Declarações externasExternal declarations

DelegadosDelegates
Arquivo de origemSource file

NamespaceNamespace

InterfaceInterface

MóduloModule

ClasseClass

EstruturaStructure
Protected FriendProtected Friend União de Protected e Friend:Union of Protected and Friend:

O código na mesma classe ou o mesmo assembly como um elemento amigo protegido, ou em qualquer classe derivada da classe do elemento, poderá acessá-laCode in the same class or the same assembly as a protected friend element, or within any class derived from the element's class, can access it
InterfacesInterfaces

ClassesClasses

EstruturasStructures

ProcedimentosProcedures

PropriedadesProperties

Variáveis de membroMember variables

ConstantesConstants

EnumeraçõesEnumerations

EventosEvents

Declarações externasExternal declarations

DelegadosDelegates
ClasseClass
Private Contexto de declaração:Declaration context:

Código de tipo que declara um elemento particular, incluindo o código de tipos contidos, pode acessar o elementoCode in the type that declares a private element, including code within contained types, can access the element
InterfacesInterfaces

ClassesClasses

EstruturasStructures

Membros de estruturaStructure members

ProcedimentosProcedures

PropriedadesProperties

Variáveis de membroMember variables

ConstantesConstants

EnumeraçõesEnumerations

EventosEvents

Declarações externasExternal declarations

DelegadosDelegates
MóduloModule

ClasseClass

EstruturaStructure
Private Protected O código na classe que declara um elemento protegido privado ou código em uma classe derivada, encontrado no mesmo assembly como a classe bas.Code in the class that declares a private protected element, or code in a derived class found in the same assembly as the bas class. InterfacesInterfaces

ClassesClasses

EstruturasStructures

ProcedimentosProcedures

PropriedadesProperties

Variáveis de membroMember variables

ConstantesConstants

EnumeraçõesEnumerations

EventosEvents

Declarações externasExternal declarations

DelegadosDelegates
ClasseClass

Consulte tambémSee also