Encapsulamento
O encapsulamento, em uma linguagem orientada a objetos, é uma forma de separar os métodos e as propriedades de uma classe pelo seu tipo de acesso, dando acesso as informações necessárias de uma classe para outra.
O encapsulamento é implementado utilizando os especificadores de acesso. Um especificador de acesso, assim como o seu próprio nome diz, registra qual o nível de acesso que a propriedade ou método terá. Em C# existem 5 possibilidades:
• Internal;
• Private;
• Protected;
• Protected Internal;
• Public.
Com esses especificadores, o encapsulamento fica completo.
O especificador Internal define que o membro será exposto no escopo do assembly.
O especificador Private define que o membro será exibido apenas em sua própria classe, garantindo o uso privado do membro.
O especificador Protected define que o membro será exibido para as classes herdeiras (os métodos/propriedades da classe pai ficam visíveis para as classes filhas).
O especificador Protected Internal define que o membro será exibido no escopo do assembly ou nas classes herdeiras
O especificador Public define que o membro será exibido para outros objetos e/ou outras funções.
Para exemplificar como o encapsulamento é feito, veja a imagem abaixo.
Na imagem abaixo está demonstrado como os métodos e propriedades são exibidos quando eles são chamados a partir de uma classe comum (sem herdar nenhuma outra), de acordo com o seu tipo de encapsulamento.