Modificadores de acesso: private, public, protected e internal
🔒 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
Postar um comentário