C# PRIVATE


Ta lekcja będzie szybka i bez bolesna, otóż omówimy specyfikator dostępu: private. Samo pojęcie specyfikator dostępu jest ci znane z poprzednich lekcji, poznałeś na razie jeden specyfikator otóż public dzięki niemu mieliśmy dostęp przez obiekt do składników klasy, a dokładnie do ich kopi gdyż każdy obiekt posiada własną kopię danych klasy. Przejdziemy do rzeczy, gdy jakiś składnik klasy zadeklarujemy jako private to będziemy mieli do niego tylko dostęp z wnętrza klasy, a nie z poza jej jak to było w przypadku specyfikatora dostępu public. Zapewne mniej więcej wiesz o co chodzi, jednak aby utwierdzić cię w tym przekonaniu zaprezentuje krótki przykład w którym wykorzystuję specyfikator dostępu private.

Początek kodu:

using System;


class X
{
private int x = 10;


public void Wyjscie()
{
Console.WriteLine(x);
}
}


class Pokaz
{
public static void Main()
{
X obiekt_x = new X();
//obiekt_x.x = 10 ; <- Błąd gdyż poza klasą składnik ‘x’ nie jest widoczny
obiekt_x.Wyjscie();
}

}

Koniec kodu:

Zmienną ‘x’ deklarujemy jako private, oznacza to, że jest ona widoczna we wnętrzu klasy, widzą ją wszystkie metody, konstruktory, własności itd. Które są zadeklarowane w klasie, czyli metoda Wyjscie() nam wyświetli wartość zmiennej ‘x’.  Ale w klasie Pokaz, już musiałem wy komentować linijkę obiekt_x.x = 10 gdyż nie mam dostępu z poza klasy do tej zmiennej. Nie jest konieczne pisanie w klasie przed każdą zmienną czy to np. metodą słowa private, jeżeli tego nie uczynimy, będzie ona automatycznie zawsze uznawana jako private, ja jednak zalecam zawsze pisanie słowa private, gdyż potem gdy poprawiamy program, unikniemy nie potrzebnej frustracji. Specyfikator dostępu jak wiesz nie odnosi się tylko do zmiennych ale także do metod, jeżeli w powyższym programie metodę Wyjscie() ustawili byś my na private to podczas wywołania obiekt_x.Wyjscie() ;  wystąpił by błąd gdyż, obiekt_x nie ma dostępu do metody Wyjscie() więc jej nie może wywołać. Pisząc swoje klasy będziesz często korzystał z specyfikatora dostępu: private, aby użytkowników swojej klasy nie narażać na błędy.