Modificadores de acesso: private, public, protected e internal

Modificadores de Acesso em C#

🔒 Modificadores de Acesso em C#

Os modificadores de acesso em C# são palavras-chave que controlam a visibilidade e o escopo de classes, métodos e variáveis. Eles são fundamentais para o encapsulamento, um dos pilares da Programação Orientada a Objetos.

Neste post, vamos focar nos 3 mais usados:

  • private
  • public
  • protected

🔐 1. Modificador private

O private é o mais restritivo. Ele limita o acesso apenas dentro da própria classe.

Exemplo:


class Pessoa

{

    private string nome;

    private int idade;

    public Pessoa(string nome, int idade)

    {

        this.nome = nome;

        this.idade = idade;

    }

    public void ExibirInfo()

    {

        Console.WriteLine($"Nome: {nome}, Idade: {idade}");

    }

}

        

Se tentarmos acessar os campos nome ou idade de fora da classe, teremos um erro:


Pessoa pessoa = new Pessoa("João", 30);

Console.WriteLine(pessoa.nome); // Erro: 'Pessoa.nome' é inacessível

        

A única forma de acessar esses dados é através do método público ExibirInfo().

🌍 2. Modificador public

O public permite o acesso a um membro de qualquer lugar do código.

Exemplo:


class Carro

{

    public string marca;

    public string modelo;

    public Carro(string marca, string modelo)

    {

        this.marca = marca;

        this.modelo = modelo;

    }

    public void ExibirCarro()

    {

        Console.WriteLine($"Marca: {marca}, Modelo: {modelo}");

    }

}

        

Agora podemos acessar diretamente os campos:


Carro carro = new Carro("Ford", "Mustang");

Console.WriteLine(carro.marca); // Saída: Ford

carro.marca = "Chevrolet";

Console.WriteLine(carro.marca); // Saída: Chevrolet

        

Cuidado: Isso permite modificações diretas nos campos, o que pode comprometer a integridade dos dados.

🦁 3. Modificador protected

O protected permite o acesso dentro da própria classe e também em classes derivadas (subclasses).

É muito útil em cenários de herança!

Exemplo:


class Animal

{

    protected string nome;

    public Animal(string nome)

    {

        this.nome = nome;

    }

    public void ExibirNome()

    {

        Console.WriteLine($"Nome do animal: {nome}");

    }

}

class Cachorro : Animal

{

    public Cachorro(string nome) : base(nome) { }

    public void Latir()

    {

        Console.WriteLine($"{nome} está latindo!");

    }

}

        

Assim podemos fazer:


Cachorro cachorro = new Cachorro("Rex");

cachorro.Latir(); // Saída: Rex está latindo!

        

Mas tentar acessar nome diretamente de fora ainda dará erro:


Console.WriteLine(cachorro.nome); // Erro: 'Animal.nome' é inacessível

        

📌 Resumo Comparativo:

  • private: Apenas a própria classe pode acessar. ✅ Protege os detalhes internos.
  • public: Qualquer código pode acessar. ⚠️ Use com cuidado para não expor demais.
  • protected: A classe e suas subclasses têm acesso. ✅ Bom para herança mantendo encapsulamento.

Comentários

Postagens mais visitadas