“Szorty” to seria wpisów zawierająca krótkie notatki (podstawowe informacje) związane z pytaniami, jakie pojawiają się na rozmowach rekrutacyjnych. Ich poziom trudności będzie różny. Źródłem pytań są zarówno moje doświadczenia jak również informacje od innych deweloperów. Przede wszystkim tą kategorię traktuję jako swój notatnik, lecz mam nadzieję, że każdy znajdzie tu coś dla siebie.


#2. – Czym jest hermetyzacja (C#) ?

Hermetyzacja (enkapsulacja) jest jednym z założeń programowania obiektowego. Oznacza ograniczanie w obiektach tego, do czego inna klasa nie powinna mieć dostępu. Towarzyszy temu współczesna idea pisania kodu jak najbardziej zamkniętego.

Do implementacji tego założenia służą modyfikatory dostępu, które określają stopień dostępności.

W języku C# wyróżniamy następujące słowa kluczowe określające modyfikatory dostępu:

  • public
    Oznaczenie elementu tym modyfikatorem oznacza jego dostępność z poziomu dowolnej klasy zewnętrznej
  • private
    Ukrywa dostępność do elementu z poziomu klas zewnętrznych. Pola i metody oznaczone tym słowem kluczowym są dostępne tylko z poziomu wnętrza klasy posiadającej ich deklaracje.
  • protected
    Elementy zadeklarowane z określeniem tego słowa kluczowego będą widoczne jedynie dla klasy w której się znajdują oraz klas dziedziczących po niej.
  • internal
    Udostępnia element w ramach danego podzespołu.
  • protected internal
    Zestawienie dwóch słów kluczowych. Bezpośrednie powiązanie właściwości protected oraz internal nie jest możliwe, dlatego w tym przypadku dostępność elementu zależy od kontekstu użycia. Dla klasy dziedziczącej (znajdującej się w dowolnym podzespole) dostępność będzie określona jako protected. Natomiast w przypadku klasy nie dziedziczącej, ale znajdującej się w tym samym zasobie element będzie ograniczony właściwościami związanymi z modyfikatorem internal.

Author:

Programista, przedsiębiorca, tancerz ognia. Staram się ogarniać rzeczywistość wyciągając jak najwięcej wartości z tego co daje nam technologia. Jestem miłośnikiem produktywności i wyznawcą stwierdzenia "Done is better than perfect". Od ponad 5 lat staram rozwijać się oraz zdobywać doświadczenie jako programista. Najbliżej mi do aplikacji webowych i technologii .NET, ale od jakiegoś czasu stałem się entuzjastą rozwiązań JavaScriptowych.