Sobes.tech
Junior — Middle

Ի՞նչ տարբերություն կա access modifier-ների՝ 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-ի, թույլ տալով ժառանգներին աշխատել բազային դասի պաշտպանված անդամների հետ։