DEV Community

Cover image for Entendendo Modificadores de Acesso em C#
Ivan Trindade
Ivan Trindade

Posted on

Entendendo Modificadores de Acesso em C#

Os modificadores de acesso são uma parte fundamental da programação orientada a objetos em C#. Eles determinam a visibilidade e acessibilidade dos tipos e membros do seu código, ajudando a implementar o conceito de encapsulamento. Neste artigo, vamos explorar todos os modificadores de acesso disponíveis em C# de uma forma clara e prática.

O que são Modificadores de Acesso?

Modificadores de acesso são palavras-chave que definem como as classes, métodos, propriedades e outros membros do seu código podem ser acessados por partes do programa. Vamos explorar os modificadores abaixo:

  • public
  • private
  • protected
  • internal

Vamos entender cada um deles em detalhes!

1. Public

O modificador public é o mais permissivo de todos. Membros públicos podem ser acessados de qualquer lugar do seu código, seja dentro do mesmo assembly ou em outros assemblies que referenciam o seu projeto.

public class Customer
{
    // Propriedade pública que pode ser acessada de qualquer lugar
    public string Name { get; set; }

    // Método público que pode ser chamado de qualquer lugar
    public void DisplayInfo()
    {
        Console.WriteLine($"Customer: {Name}");
    }
}
Enter fullscreen mode Exit fullscreen mode

2. Private

O modificador de acesso private é o mais restritivo. Membros privados só podem ser acessados dentro da própria classe onde foram declarados.

public class BankAccount
{
    // Campo privado que só pode ser acessado dentro desta classe
    private decimal _balance;

    // Método privado que só pode ser chamado dentro desta classe
    private void ValidateAmount(decimal amount)
    {
        if (amount <= 0)
            throw new ArgumentException("O valor deve ser maior que zero");
    }

    public void Deposit(decimal amount)
    {
        ValidateAmount(amount); // Ok: método privado chamado dentro da classe
        _balance += amount;     // Ok: campo privado acessado dentro da classe
    }
}
Enter fullscreen mode Exit fullscreen mode

3. Protected

O modificador protected permite que membros sejam acessados dentro da própria classe e por classes que herdam dela (classes filhas).

public class Animal
{
    // Campo protegido que pode ser acessado por classes filhas
    protected string Species;

    // Método protegido que pode ser chamado por classes filhas
    protected virtual void MakeSound()
    {
        Console.WriteLine("Som genérico de animal");
    }
}

public class Dog : Animal
{
    public void Initialize()
    {
        Species = "Canino";    // Ok: campo protected acessado na classe filha
        MakeSound();           // Ok: método protected acessado na classe filha
    }
}
Enter fullscreen mode Exit fullscreen mode

4. Internal

O modificador internal permite que membros sejam acessados apenas dentro do mesmo projeto.

// Classe internal só pode ser usada dentro do mesmo projeto
internal class ConfigurationManager
{
    // Propriedade internal só pode ser acessada dentro do mesmo projeto
    internal string DatabaseConnection { get; set; }
}
Enter fullscreen mode Exit fullscreen mode

Conclusão

Os modificadores de acesso são ferramentas poderosas para controlar a visibilidade e o acesso aos membros das suas classes. Usar os modificadores corretamente ajuda a:

Manter um bom encapsulamento
Reduzir o acoplamento entre diferentes partes do código
Prevenir uso incorreto das suas classes
Facilitar a manutenção do código

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Eliminate Context Switching and Maximize Productivity

Pieces.app

Pieces Copilot is your personalized workflow assistant, working alongside your favorite apps. Ask questions about entire repositories, generate contextualized code, save and reuse useful snippets, and streamline your development process.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay