Modyfikatory dostępu (specyfikatory) w języku C# z przykładami programów
Co to jest modyfikator dostępu (specyfikator) w języku C#?
Modyfikatory dostępu lub Specyfikatory dostępu w języku C# to słowa kluczowe używane do definiowania widoczności właściwości lub metody klasy. Używa się go, gdy nie chcesz, aby inne programy widziały właściwości lub metody klasy. Modyfikatory dostępu ograniczają dostęp, tak że inne programy nie mogą zobaczyć właściwości lub metod klasy.
W języku C# istnieje 6 typów modyfikatorów dostępu:
- Sprawy Prywatne
- Publiczne
- Chroniony
- Wewnętrzne
- Chronione wewnętrzne
- Prywatna ochrona
Dowiemy się o głównych modyfikatorach dostępu w C# na przykładach programów, jak wyjaśniono poniżej.
Modyfikatory dostępu prywatnego w C#
Gdy modyfikator dostępu prywatnego jest dołączony do właściwości lub metody, oznacza to, że do tych elementów nie można uzyskać dostępu z żadnego programu zewnętrznego.
Przykład modyfikatora dostępu prywatnego
Weźmy przykład i zobaczmy, co się stanie, gdy użyjemy modyfikatora dostępu prywatnego.
Zmodyfikujmy bieżący kod w naszym pliku Tutorial.cs. W metodzie SetTutorial zmieńmy słowo kluczowe public na private.
Przejdźmy teraz do naszego pliku Program.cs. Zauważysz, że pod metodą SetTutorial znajduje się czerwona falista linia.
Ponieważ zadeklarowaliśmy metodę SetTutorial jako prywatną w naszej klasie Tutorial, Visual Studio to wykryło. Poinformowało użytkownika, podświetlając ją, że teraz ta metoda nie będzie działać z pliku Program.cs.
Modyfikatory dostępu publicznego C#
Gdy modyfikator dostępu publicznego jest dołączony do właściwości lub metody, oznacza to, że dostęp do tych elementów można uzyskać z dowolnego programu zewnętrznego. Widzieliśmy to już w naszych wcześniejszych przykładach.
Przykład modyfikatora dostępu publicznego
Ponieważ w klasie Tutorial zdefiniowaliśmy nasze metody jako publiczne, dostęp do nich można uzyskać z pliku Program.cs.
Chronione modyfikatory dostępu w C#
Gdy modyfikator dostępu chronionego jest dołączony do właściwości lub metody, oznacza to, że dostęp do tych elementów członkowskich można uzyskać tylko za pomocą klasy dziedziczone z prądu klasa. Zostanie to wyjaśnione bardziej szczegółowo w klasie Dziedziczenie.
Modyfikatory dostępu wewnętrznego C#
Gdy modyfikator dostępu wewnętrznego jest dołączony do właściwości lub metody, dostęp do tych elementów członkowskich może uzyskać tylko program wewnętrzny, ale nie program zewnętrzny.
Konstruktor C#
C# Konstruktory służą do inicjowania wartości pól klas podczas tworzenia odpowiadających im obiektów. Konstruktor to metoda, która ma taką samą nazwę jak nazwa klasy. Jeśli w klasie zdefiniowany jest konstruktor, udostępni on pierwszą metodę wywoływaną podczas tworzenia obiektu. Załóżmy, że mamy klasę o nazwie Pracownik. Metoda konstruktora będzie również nosiła nazwę Employee().
Należy zwrócić uwagę na następujące kluczowe kwestie dotyczące metod konstruktora
- Domyślny modyfikator dostępu C# dla konstruktora musi być publiczny.
- Metoda konstruktora nie powinna zwracać typu zwracanego.
Przykład konstruktora C#
Zobaczmy teraz, jak możemy włączyć użytkownika konstruktorów do naszego kodu. Użyjemy konstruktorów do zainicjowania pól TutorialID i TutorialName do niektórych wartości domyślnych podczas tworzenia obiektu.
Krok 1) Pierwszym krokiem jest utworzenie konstruktora dla naszej klasy Tutorial. W tym kroku dodamy poniższy kod do pliku Tutorial.cs.
Wyjaśnienie kodu: -
- Najpierw dodajemy nową metodę, która ma taką samą nazwę jak nazwa klasy. Ponieważ ma taką samą nazwę jak klasa, C# traktuje ją jako metodę konstruktora. Zatem teraz, gdy metoda wywołująca utworzy obiekt tej klasy, metoda ta zostanie wywołana domyślnie.
- W konstruktorze Tutorial ustawiamy wartość TutorialID na 0, a TutorialName na „Default”. Zatem za każdym razem, gdy tworzony jest obiekt, pola te zawsze będą miały wartości domyślne.
Przejdźmy teraz do naszego pliku Program.cs i po prostu usuńmy linię wywołującą metodę SetTutorial. Dzieje się tak, ponieważ chcemy po prostu zobaczyć, jak działa konstruktor.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public Tutorial() { TutorialID=0; TutorialName="Default"; } public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor=new Tutorial(); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Wyjaśnienie kodu: -
- Pierwszym krokiem jest utworzenie obiektu dla klasy Tutorial. Odbywa się to za pomocą słowa kluczowego „nowy”.
- Używamy metody GetTutorial klasy Tutorial, aby uzyskać TutorialName. Następnie jest on wyświetlany na konsoli za pomocą metody Console.WriteLine.
Jeżeli powyższy kod zostanie wpisany poprawnie i program zostanie uruchomiony, wyświetlony zostanie następujący komunikat.
Wyjście:
Z danych wyjściowych wynika, że konstruktor rzeczywiście został wywołany i że wartość TutorialName została ustawiona na „Default”.
Uwaga: Tutaj wartość „domyślna” jest pobierana z konstruktora.
Podsumowanie
- Modyfikatory dostępu C# lub specyfikatory dostępu służą do definiowania widoczności właściwości lub metody klasy.
- Gdy modyfikator dostępu prywatnego jest dołączony do właściwości lub metody, oznacza to, że do tych elementów nie można uzyskać dostępu z żadnego programu zewnętrznego.
- Gdy modyfikator dostępu publicznego jest dołączony do właściwości lub metody, oznacza to, że dostęp do tych elementów można uzyskać z dowolnego programu zewnętrznego.
- Gdy modyfikator dostępu chronionego jest dołączony do właściwości lub metody, oznacza to, że dostęp do tych elementów członkowskich mogą uzyskać tylko klasy odziedziczone z bieżącej klasy.
- Gdy modyfikator dostępu wewnętrznego jest dołączony do właściwości lub metody, dostęp do tych elementów członkowskich może uzyskać tylko program wewnętrzny, ale nie program zewnętrzny.
- Konstruktory C# służą do inicjowania wartości pól klas podczas tworzenia odpowiadających im obiektów.