Junior — Middle
Jaka jest różnica między modyfikatorami dostępu private i protected w programowaniu obiektowym?
sobes.tech AI
Odpowiedź od AI
W programowaniu obiektowym (na przykładzie C#) modyfikatory dostępu private i protected różnią się poziomem widoczności członków klasy:
-
private — członek klasy jest dostępny tylko wewnątrz samej klasy. Ani podklasy, ani inne klasy nie mogą uzyskać do niego dostępu.
-
protected — członek klasy jest dostępny wewnątrz samej klasy i we wszystkich jej podklasach (dziedziczących), nawet jeśli znajdują się w innym przestrzeni nazw.
Przykład:
class BaseClass
{
private int privateField = 1;
protected int protectedField = 2;
void Show()
{
Console.WriteLine(privateField); // Dostępne
Console.WriteLine(protectedField); // Dostępne
}
}
class DerivedClass : BaseClass
{
void ShowDerived()
{
// Console.WriteLine(privateField); // Błąd: privateField niedostępne
Console.WriteLine(protectedField); // Dostępne
}
}
W związku z tym, protected rozszerza zakres widoczności w porównaniu z private, umożliwiając dziedziczącym pracę z chronionymi członkami klasy bazowej.