Sobes.tech
Junior — Middle

Qual è la differenza tra i modificatori di accesso private e protected nella programmazione orientata agli oggetti?

sobes.tech AI

Risposta dell'AI

Nella programmazione orientata agli oggetti (ad esempio in C#), i modificatori di accesso private e protected differiscono nel livello di visibilità dei membri della classe:

  • private — il membro della classe è accessibile solo all'interno della stessa classe. Né le sottoclassi né altre classi possono accedervi.

  • protected — il membro della classe è accessibile all'interno della stessa classe e in tutte le sue sottoclassi (ereditarie), anche se si trovano in uno spazio dei nomi diverso.

Esempio:

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

    void Show()
    {
        Console.WriteLine(privateField);   // Disponibile
        Console.WriteLine(protectedField); // Disponibile
    }
}

class DerivedClass : BaseClass
{
    void ShowDerived()
    {
        // Console.WriteLine(privateField); // Errore: privateField non accessibile
        Console.WriteLine(protectedField);  // Disponibile
    }
}

Pertanto, protected amplia l'ambito di visibilità rispetto a private, consentendo agli eredi di lavorare con i membri protetti della classe base.