Zamknij komunikat

Nowy Office 2013
Do góry Skomentuj

19. Modyfikatory dostępu

19. Modyfikatory dostępu

Daniel Celeda
13 czerwca 2006
52 530
Odsłony
Daniel Celeda
13 czerwca 2006
52 530
Odsłony

W C# wszystkie metody oraz zmienne muszą być składowymi klas lub struktur. Każda ze składowych ma określony poziom dostępu. Za określenie tego poziomu odpowiedzialne są modyfikatory dostępu, które poprzedzają składowe klasy.

Modyfikatory oraz ich opis:

public – czyni składową dostępna dla innych klas,
private – czyni składową dostępna tylko z klasy, która tę składową zdefiniowała.

Oprócz dwóch powyższych istnieją jeszcze trzy inne, którymi na razie nie będziemy się zajmować – protected, internal, protected internal.

Czas na przykłady.

class Echo
{
  public string napis;

  public void Napisz()
  {
    System.Console.WriteLine(napis);
  }
}
class KlasaGlowna
{
  static void Main()
  {
    Echo obiekt = new Echo();
    obiekt.napis = "Zawartość zmiennej napis.";
    obiekt.Napisz();
    System.Console.ReadLine();
  }
}

Zmienna “napis” to składowa klasy “Echo”. Posiada ona modyfikator „public”, czyli możliwe jest zapisywanie do tej zmiennej oraz odczytywanie z niej wartości z poziomu innych klas.
Linijka:

obiekt.napis = "Zawartość zmiennej napis.";

znajduje się w metodzie „Main()” klasy „KlasaGlowna” jednak możemy ją wykonać, ponieważ zmienna „napis” ma modyfikator „public”.
Co się stanie jeśli modyfikator „public” zamienimy na „private”? Przekonajmy się.

class Echo
{
  private string napis;

  public void Napisz()
  {
    System.Console.WriteLine(napis);
  }
}
class KlasaGlowna
{
  static void Main()
  {
    Echo obiekt = new Echo();
    obiekt.napis = "Zawartość zmiennej napis.";
    obiekt.Napisz();
    System.Console.ReadLine();
  }
}

Podczas kompilacji otrzymujemy komunikat o błędzie:

'Echo.napis' is inaccessible due to its protection level

Błąd został wygenerowany, ponieważ próbowaliśmy “dostać się” do zmiennej z poziomu innej klasy niż ta, w której zmienna została zadeklarowana oraz zmienna ta ma modyfikator “private”.

W jakim celu, więc używać modyfikatora „private”? Używamy go po to żeby ograniczyć dostęp do jakiejś składowej. Przyjęło się, że zmienne zawsze mają modyfikator „private”, a ich wartości ustalamy poprzez publiczne metody (metody z modyfikatorem „public”). Wraz z pojawieniem się języka C# zaczęto używać właściwości (properties) – odpowiedników publicznych metod do pobierania i ustawiania wartości zmiennym prywatnym (jest to zalecany sposób). Na razie jednak używać będziemy metod.

class Echo
{
  private string napis;
  public void PrzypiszWartosc(string nowaWartosc)
  {
    napis = nowaWartosc;
  }
  public void Napisz()
  {
    System.Console.WriteLine(napis);
  }
}
class KlasaGlowna
{
  static void Main()
  {
    Echo obiekt = new Echo();
    obiekt.PrzypiszWartosc("Przypisany tekst");
    obiekt.Napisz();
    System.Console.ReadLine();
  }
}

Jeśli nie zadeklarujemy modyfikatora dostępu dla składowej klasy to domyślnie przyjętym będzie „private”. Musimy także zapamiętać, że modyfikatorów używamy tylko dla składowych klasy a nie dla zmiennych lokalnych, czyli takich które deklarujemy tylko wewnątrz jakiejś metody .

Zobacz również

Komentarze

Kurs bardzo dobry!
r, 13 czerwca 2006, 09:38
Dlaczego komentarze, do artykułu gromadzone są osobno do każdej z podstron, a nie raz a porządnie wszystkie podspodem bez względu na podstronę? :)
Janek, 5 sierpnia 2006, 21:41
Zeby mozna bylo komentowac kazdy rozdzial kursu :) A nie zeby sie to wszystko platalo :) POzdrawiam i kurs bardzo dobry :)
SeSo, 29 sierpnia 2006, 03:10
Mozna by juz opisac pozostale.. to nie wiele wiecej.
T, 5 grudnia 2007, 12:09
a wlasciwosci set i get dla zmiennych private??? po co uczyc sie rzeczy ktorych teraz nikt nie stosuje ??
as, 9 grudnia 2007, 22:43
A kolorowanie składni pies zjadł...

autor, 8 stycznia 2009, 19:33
Brak opisu właściwości (get{} i set{}) - niedobrze...

carck3r, 1 maja 2009, 21:57
Kurs dość dobry, ale wyglada na taki który ktoś musiał zrobić pod przymusem a nie sam z siebie

xman, 12 września 2009, 21:29
Świetny kurs !!!
Fox, 6 kwietnia 2011, 12:50
czytam te kursy jako ktoś, kto chce się przesiąć z Javy na C# i uważam, że jest to w sam raz dla mnie. Dzięki :)
h, 20 czerwca 2011, 15:31
Dokladnie. To jest dla kogos kto np. zna juz Jave i chce przesiac sie na C#.
Rafal, 28 czerwca 2017, 10:55

Dodaj swój komentarz

Zasady publikacji komentarzyZasady publikacji komentarzy

Redakcja CentrumXP.pl nie odpowiada za treść komentarzy publikowanych na stronach Portalu
i zastrzega sobie prawo do usuwania wypowiedzi, które:

  • zawierają słowa wulgarne, obraźliwe, prowokujące i inne naruszające dobre obyczaje;
  • są jedynie próbami reklamowania stron internetowych (spamowanie poprzez umieszczanie linków);
  • przyczyniają się do złamania prawa bądź warunków licencyjnych oprogramowania (cracki, seriale, torrenty itp.);
  • zawierają dane osobowe, teleadresowe, adresy mailowe lub numery GG;
  • merytorycznie nie wnoszą nic do dyskusji lub nie mają związku z tematem komentowanego newsa, artykułu bądź pliku.