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-ს, რაც საშუალებას აძლევს მემკვიდრეებს მუშაობა გაუწიონ დამცველ წევრებთან ძირითადი კლასის.