Modificadores de acesso (também chamados de regras de escopo) determinam qual código pode acessar um elemento - ou seja, qual código tem permissão para lê-lo ou gravá-lo. Nas versões anteriores do Visual Basic, havia três tipos de classes. Estes foram transferidos para o .NET. Em cada um deles, o .NET permite acesso apenas ao código:
- Privado - dentro do mesmo módulo, classe ou estrutura.
- Amigo - dentro da mesma montagem.
- Público - em qualquer lugar do mesmo projeto, de outros projetos que fazem referência ao projeto e de qualquer montagem criada a partir do projeto. Em outras palavras, qualquer código que possa encontrá-lo.
VB.NET também adicionou um e meio novos.
- Protegido
- Amigo protegido
A "metade" é porque Amigo Protegido é uma combinação da nova classe Protegida e da velha classe Amigo.
Os modificadores de Amigo Protegido e Protegido são necessários porque o VB.NET implementa o último requisito OOP de que o VB estava ausente: Herança.
Antes do VB.NET, os programadores C ++ e Java arrogantes e desdenhosos menosprezavam o VB porque, segundo eles, "não era totalmente orientado a objetos". Por quê? Versões anteriores não possuíam herança. A herança permite que os objetos compartilhem suas interfaces e / ou implementação em uma hierarquia. Em outras palavras, a herança torna possível um objeto de software que assume todos os métodos e propriedades de outro.
Isso geralmente é chamado de relacionamento "é-a".
- Um caminhão "é um veículo".
- Uma forma quadrada "é-a".
- Um cão "é um mamífero".
A idéia é que métodos e propriedades mais gerais e amplamente utilizados sejam definidos como classes "pai" e sejam mais específicos nas classes "filho" (geralmente chamadas de subclasses). "Mamífero" é uma descrição mais geral que "cachorro". Baleias são mamíferos.
O grande benefício é que você pode organizar seu código para escrever apenas um código que faça algo que muitos objetos precisam fazer uma vez no pai. Todos os "funcionários" precisam ter um "número de funcionário" atribuído a eles. Um código mais específico pode fazer parte das classes filho. Somente funcionários que trabalham no escritório geral precisam ter uma chave de cartão de porta atribuída a eles.
Essa nova capacidade de herança requer novas regras, no entanto. Se uma nova classe é baseada em uma antiga, Protected é um modificador de acesso que reflete esse relacionamento. O código protegido pode ser acessado apenas de dentro da mesma classe ou de uma classe derivada dessa classe. Você não deseja que as chaves do cartão da porta do funcionário sejam atribuídas a ninguém, exceto aos funcionários.
Como observado, Amigo Protegido é uma combinação do acesso de Amigo e Protegido. Os elementos de código podem ser acessados a partir de classes derivadas ou de dentro do mesmo assembly ou de ambos. Amigo protegido pode ser usado para criar bibliotecas de classes, pois o código que acessa seu código só precisa estar no mesmo assembly.
Mas o Friend também tem esse acesso, então por que você usaria o Protected Friend? O motivo é que o Friend pode ser usado em um arquivo de origem, Namespace, Interface, Módulo, Classe ou Estrutura. Mas Amigo Protegido só pode ser usado em uma Classe. Amigo Protegido é o que você precisa para criar suas próprias bibliotecas de objetos. Friend é apenas para situações difíceis de código em que o acesso amplo à montagem é realmente necessário.