Sobes.tech
Junior — Middle

Jaký je rozdíl mezi modifikátory přístupu private a protected v objektově orientovaném programování?

sobes.tech AI

Odpověď od AI

V objektově orientovaném programování (na příkladu C#) se modifikátory přístupu private a protected liší úrovní viditelnosti členů třídy:

  • private — člen třídy je dostupný pouze uvnitř samotné třídy. Ani podtřídy, ani jiné třídy k němu nemají přístup.

  • protected — člen třídy je dostupný uvnitř třídy a ve všech jejích podtřídách (dědicích), i když jsou v jiném jmenném prostoru.

Příklad:

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

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

class DerivedClass : BaseClass
{
    void ShowDerived()
    {
        // Console.WriteLine(privateField); // Chyba: privateField není dostupné
        Console.WriteLine(protectedField);  // Dostupné
    }
}

Tedy, protected rozšiřuje oblast viditelnosti ve srovnání s private, umožňuje dědicům pracovat s chráněnými členy základní třídy.