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 васеъ мекунад, имкон медиҳад, ки ҳередиториҳо бо аъзои муҳофизатшудаи синфи асосӣ кор кунанд.