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, επιτρέποντας στους κληρονόμους να εργάζονται με τα προστατευμένα μέλη της βασικής κλάσης.