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