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