Código Central – Blog
Aprenda C#

Acessibilidade de Membros no C#: Controle de Acesso e Declaração

Ilustração representando o acesso a membros em C# com diferentes modificadores de acesso, como public, private, protected e internal, mostrando como esses níveis controlam o acesso dentro do código.

No C#, o controle de acesso aos membros de uma classe, struct, interface ou outro tipo é essencial para garantir a integridade e a encapsulação do código. A acessibilidade de um membro determina quais partes do código podem interagir com ele, e isso é configurado por meio de modificadores de acesso. Vamos explorar como isso funciona e os diferentes níveis de acessibilidade disponíveis.

O Que é Acessibilidade de Membros?

A acessibilidade de um membro refere-se à capacidade de outras partes do programa acessarem esse membro. Isso é controlado pelo modificador de acesso atribuído à declaração do membro. Quando um membro está acessível, significa que pode ser usado ou chamado de fora de seu escopo imediato.

Os modificadores de acesso mais comuns em C# são:

Declaração de Acessibilidade

Dependendo de onde o membro é declarado, a acessibilidade pode variar:

Exemplos de Uso

Aqui está um exemplo de diferentes níveis de acessibilidade em uma classe:

class Carro
{
    public string Marca; // Acessível a qualquer parte do programa
    private string Modelo; // Acessível apenas dentro da classe Carro
    protected string Ano; // Acessível dentro da classe Carro e em classes derivadas
    internal string Cor; // Acessível dentro do mesmo assembly
}

Neste exemplo, Marca pode ser acessada de qualquer lugar, enquanto Modelo é restrito à própria classe. O campo Ano pode ser acessado por classes que herdam de Carro, e Cor só pode ser acessado dentro do mesmo assembly.

Domínios de Acessibilidade

O domínio de acessibilidade define as áreas do código onde um membro pode ser acessado. Em termos práticos, isso significa que um membro public tem o domínio mais amplo, enquanto um membro private tem o domínio mais restrito.

Por exemplo:

public class Veiculo
{
    protected int Velocidade;
}

public class Carro : Veiculo
{
    public void Acelerar()
    {
        Velocidade += 10; // Acessível em uma classe derivada
    }
}

Aqui, Velocidade está acessível na classe derivada Carro, pois é um membro protected de Veiculo.

Regras de Acessibilidade

Existem algumas regras importantes que devem ser observadas:

  1. Herança e Membros Privados: Membros privados são herdados, mas não são acessíveis diretamente na classe derivada.
   class A
   {
       private int x;
   }

   class B : A
   {
       public void MostrarX()
       {
           // Não é possível acessar 'x' diretamente
       }
   }
  1. Acessibilidade e Tipos: O tipo de um membro (como o retorno de um método ou tipo de campo) deve ser pelo menos tão acessível quanto o próprio membro.
   class A {...}
   public class B
   {
       private A _campo; // Permitido, pois 'A' tem a mesma acessibilidade que '_campo'
   }

Conclusão

Controlar a acessibilidade de membros em C# é essencial para garantir a encapsulação e segurança do código. Ao usar corretamente os modificadores de acesso, você pode proteger os detalhes de implementação e expor apenas as partes do código que devem ser acessíveis a outras classes ou assemblies.

Posts relacionados

Estrutura Lexical e Sintática do C#: Explorando a Base da Linguagem

Diogo
2 semanas atrás

Nomes de Namespace e Tipos em C#: Entendendo Nomes Qualificados e Escopos

Diogo
1 semana atrás

Tipos de Valor em C#: Entenda a Diferença entre Structs, Enum e Tipos Anuláveis

Diogo
6 dias atrás
Sair da versão mobile