Sobes.tech
Junior — Middle

Каква е разликата между модификаторите за достъп private и protected в обектно-ориентираното програмиране?

sobes.tech AI

Отговор от AI

В обектно-ориентираното програмиране (на пример с C#) модификаторите за достъп private и protected се различават по нивото на видимост на членовете на класа:

  • private — членът на класа е достъпен само вътре в самия клас. Нито подкласовете, нито другите класове могат да имат достъп до него.

  • protected — членът на класа е достъпен вътре в самия клас и във всички негови подкласове (наследници), дори ако те се намират в различно пространство от имена.

Пример:

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

    void Show()
    {
        Console.WriteLine(privateField);   // Достъпно
        Console.WriteLine(protectedField); // Достъпно
    }
}

class DerivedClass : BaseClass
{
    void ShowDerived()
    {
        // Console.WriteLine(privateField); // Грешка: privateField недостъпно
        Console.WriteLine(protectedField);  // Достъпно
    }
}

Така, protected разширява обхвата на видимост в сравнение с private, позволявайки на наследниците да работят с защитените членове на базовия клас.