Sobes.tech
Junior — Middle

Jaka jest różnica między modyfikatorami dostępu private i protected w programowaniu obiektowym?

sobes.tech AI

Odpowiedź od AI

W programowaniu obiektowym (na przykładzie C#) modyfikatory dostępu private i protected różnią się poziomem widoczności członków klasy:

  • private — członek klasy jest dostępny tylko wewnątrz samej klasy. Ani podklasy, ani inne klasy nie mogą uzyskać do niego dostępu.

  • protected — członek klasy jest dostępny wewnątrz samej klasy i we wszystkich jej podklasach (dziedziczących), nawet jeśli znajdują się w innym przestrzeni nazw.

Przykład:

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

    void Show()
    {
        Console.WriteLine(privateField);   // Dostępne
        Console.WriteLine(protectedField); // Dostępne
    }
}

class DerivedClass : BaseClass
{
    void ShowDerived()
    {
        // Console.WriteLine(privateField); // Błąd: privateField niedostępne
        Console.WriteLine(protectedField);  // Dostępne
    }
}

W związku z tym, protected rozszerza zakres widoczności w porównaniu z private, umożliwiając dziedziczącym pracę z chronionymi członkami klasy bazowej.