Sobes.tech
Junior — Middle

Qual é a diferença entre os modificadores de acesso private e protected na programação orientada a objetos?

sobes.tech IA

Resposta da IA

Na programação orientada a objetos (usando C# como exemplo), os modificadores de acesso private e protected diferem no nível de visibilidade dos membros da classe:

  • private — o membro da classe é acessível apenas dentro da própria classe. Nem subclasses nem outras classes podem acessá-lo.

  • protected — o membro da classe é acessível dentro da própria classe e em todas as suas subclasses (herdeiras), mesmo que estejam em um espaço de nomes diferente.

Exemplo:

class BaseClass
{
    private int privateField = 1;
    protected int protectedField = 2;

    void Show()
    {
        Console.WriteLine(privateField);   // Disponível
        Console.WriteLine(protectedField); // Disponível
    }
}

class DerivedClass : BaseClass
{
    void ShowDerived()
    {
        // Console.WriteLine(privateField); // Erro: privateField não acessível
        Console.WriteLine(protectedField);  // Disponível
    }
}

Assim, protected amplia o âmbito de visibilidade em comparação com private, permitindo que os herdeiros trabalhem com os membros protegidos da classe base.