Přístup k modifikátorům (specifikátorům) v C# s příklady programů

⚡ Chytré shrnutí

Modifikátory přístupu v jazyce C# jsou klíčová slova, která nastavují viditelnost třídy, vlastnosti nebo metody a omezují tak přístup externích programů k nim. Konstruktory inicializují hodnoty polí automaticky při každém vytvoření objektu dané třídy.

  • 🔐 Soukromý: Modifikátor soukromého přístupu omezuje člen na stejnou třídu a blokuje přístup z jakéhokoli externího programu.
  • 🌐 Veřejnost: Modifikátor veřejného přístupu zpřístupňuje vlastnost nebo metodu libovolnému externímu programu bez omezení.
  • 🛡️ Chráněný: Modifikátor chráněného přístupu sdílí členy pouze s třídami zděděnými z aktuální třídy.
  • ???? Vnitřní: Vnitřní modifikátor přístupu umožňuje přístup v rámci stejné sestavy, ale ne z externího programu.
  • 🏗️ Stavitel: Konstruktor sdílí název třídy, nepřijímá žádný návratový typ a inicializuje pole při vytvoření objektu.
  • 🤖 Asistence AI: GitHub Copilot vytváří modifikátory a konstruktory, zatímco ML.NET mapuje vlastnosti tříd na funkce modelu.

Modifikátory přístupu (specifikátory) v C#

Co je modifikátor přístupu (specifikátor) v C#?

Modifikátory přístupu Specifikátory přístupu neboli specifikace přístupu v jazyce C# jsou klíčová slova používaná k definování viditelnosti vlastnosti nebo metody třídy. Používají se, když nechcete, aby ostatní programy viděly vlastnosti nebo metody třídy. Modifikátory přístupu omezují přístup tak, aby ostatní programy nemohly vidět vlastnosti nebo metody třídy.

V C# existuje 6 typů modifikátorů přístupu:

  • soukromý
  • Veřejné
  • Chráněný
  • Interní
  • Chráněné vnitřní
  • Soukromé chráněné

Dozvíme se o hlavních modifikátorech přístupu v C# s příklady programů, jak je vysvětleno níže.

Modifikátory soukromého přístupu v C#

Když je modifikátor soukromého přístupu připojen k vlastnosti nebo metodě, znamená to, že k těmto členům nelze přistupovat z žádného externího programu.

Příklad modifikátoru soukromého přístupu

Vezměme si příklad a uvidíme, co se stane, když použijeme modifikátor soukromého přístupu.

Upravme aktuální kód v našem souboru Tutorial.cs. V metodě SetTutorial změňme klíčové slovo public na private.

Modifikátory soukromého přístupu

Nyní přejdeme na náš soubor Program.cs. Všimnete si, že pod metodou SetTutorial je červená klikatá čára.

Protože jsme nyní deklarovali metodu SetTutorial jako soukromou v naší třídě Tutorial, Visual Studio to zjistilo. Upozornil uživatele, že nyní tato metoda nebude fungovat ze souboru Program.cs.

Modifikátor soukromého přístupu

Modifikátory veřejného přístupu C#

Když je modifikátor veřejného přístupu připojen k vlastnosti nebo metodě, znamená to, že k těmto členům lze přistupovat z jakéhokoli externího programu. Už jsme to viděli v našich dřívějších příkladech.

Příklad modifikátoru veřejného přístupu

Modifikátory veřejného přístupu C#

Protože jsme naše metody definovali jako veřejné ve třídě Tutorial, lze k nim přistupovat ze souboru Program.cs.

Modifikátory chráněného přístupu v C#

Když je modifikátor chráněného přístupu připojen k vlastnosti nebo metodě, znamená to, že k těmto členům může přistupovat pouze uživatel třídy zděděné z proudu třída. To bude podrobněji vysvětleno ve třídě Dědičnost.

Modifikátory vnitřního přístupu C#

Když je modifikátor vnitřního přístupu připojen k vlastnosti nebo metodě, k těmto členům může přistupovat pouze interní program, ale nikoli externí program.

C# konstruktor

C# Konstruktory se používají k inicializaci hodnot polí tříd při vytváření jejich odpovídajících objektů. Konstruktor je metoda, která má stejný název jako třída. Pokud je konstruktor definován ve třídě, poskytne první metodu, která je volána při vytvoření objektu. Předpokládejme, že bychom měli třídu s názvem Zaměstnanec. Metoda konstruktoru by se také jmenovala jako Employee().

O metodách konstruktoru je třeba poznamenat následující klíčové věci

  1. Výchozí modifikátor přístupu C# pro konstruktor musí být nastaven jako veřejný.
  2. Pro metodu konstruktoru by neměl být žádný návratový typ.

Příklad C# konstruktoru

Podívejme se nyní, jak můžeme začlenit uživatele konstruktorů do našeho kódu. Při vytváření objektu použijeme konstruktory k inicializaci polí TutorialID a TutorialName na některé výchozí hodnoty.

Krok 1) Prvním krokem je vytvoření konstruktoru pro naši třídu Tutorial. V tomto kroku přidáme níže uvedený kód do souboru Tutorial.cs.

C# konstruktor

Code Vysvětlení:-

  1. Nejprve přidáme novou metodu, která má stejný název jako třída. Protože se jedná o stejný název jako třída, C# s tím zachází jako s metodou konstruktoru. Kdykoli tedy volající metoda vytvoří objekt této třídy, bude tato metoda standardně volána.
  2. V konstruktoru Tutorial nastavujeme hodnotu TutorialID na 0 a TutorialName na „Výchozí“. Kdykoli je tedy vytvořen objekt, tato pole budou mít vždy tyto výchozí hodnoty.

Nyní se přepněte na náš soubor Program.cs a jednoduše odstraňte řádek, který volá metodu SetTutorial. Je to proto, že chceme jen vidět, jak konstruktor funguje.

C# 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(); 
  }
 }
}

Code Vysvětlení:-

  1. Prvním krokem je vytvoření objektu pro třídu Tutorial. To se provádí pomocí klíčového slova 'new'.
  2. K získání TutorialName používáme metodu GetTutorial třídy Tutorial. To se pak zobrazí konzoli pomocí metody Console.WriteLine.

Pokud je výše uvedený kód zadán správně a program je spuštěn, zobrazí se následující výstup.

Výstup:

C# konstruktor

Z výstupu můžeme vidět, že konstruktor byl skutečně volán a že hodnota TutorialName byla nastavena na „Default“.

Poznámka: Zde je hodnota „default“ načtena z konstruktoru.

Nejčastější dotazy

Pokud není zadán žádný modifikátor, členové třídy a struktury se standardně nastaví na private a typy nejvyšší úrovně na internal a zůstanou skrytí, dokud nerozšíříte jejich viditelnost.

Třída Protected zpřístupňuje člena stejné třídě a jakékoli odvozené třídě, a to i napříč sestaveními. Třída Internal zpřístupňuje člena pouze typům ve stejném sestavení.

Protected internal umožňuje přístup ze stejné sestavy nebo jakékoli odvozené třídy. Private protected je přísnější a umožňuje přístup pouze odvozených tříd uvnitř stejné sestavy.

Jazyk C# podporuje výchozí, parametrizované, kopírovací, statické a soukromé konstruktory. Inicializují pole objektu, jednorázově spouštějí nastavení třídy nebo klonují hodnoty jiného objektu.

Statický konstruktor nepřijímá žádné modifikátory ani parametry. Spustí se jednou, před vytvořením prvního objektu nebo načtením statických členů, a inicializuje statická pole.

Ano. Třída může definovat několik konstruktorů s různými seznamy parametrů. Kompilátor vybere ten, který odpovídá argumentům předaným třídě new.

Ano. GitHub Copilot navrhuje modifikátory, konstruktory a inicializátory polí z názvu třídy nebo komentáře ve Visual Studiu a VS Code. Revzobrazit každou navrhovanou úroveň viditelnosti.

ML.NET mapuje veřejné vlastnosti datové třídy C# na funkce a popisky modelu. Veřejné metody getter a setter umožňují číst tyto hodnoty během trénování.

Shrňte tento příspěvek takto: