Sdílet prostřednictvím


Přehled objektově orientovaných technik v jazyce C#

V jazyce C# je definice typu – třídy, struktury nebo záznamu – podobná podrobnému plánu, který určuje, co může typ dělat. Objekt je v podstatě blok paměti přidělený a nakonfigurovaný podle podrobného plánu. Tento článek obsahuje přehled těchto podrobných plánů a jejich funkcí. Další článek v této sérii představuje objekty.

Zapouzdření

Zapouzdření se někdy označuje jako první pilíř nebo princip objektově orientovaného programování. Třída nebo struktura může určit, jak přístupný je každý z jejich členů pro kód mimo třídu nebo strukturu. Členy, které nejsou určené pro uživatele mimo třídu nebo sestavení, jsou skryté, aby omezily potenciál chyb kódování nebo škodlivých zneužití. Další informace naleznete v kurzu objektově orientované programování .

Členové

Členy typu zahrnují všechny metody, pole, konstanty, vlastnosti a události. V jazyce C# neexistují žádné globální proměnné ani metody, protože existují v některých dalších jazycích. I vstupní bod programu, metoda Main, musí být deklarován v rámci třídy nebo struktury (implicitně při použití příkazů na nejvyšší úrovni).

Následující seznam obsahuje všechny druhy členů, které lze deklarovat ve třídě, struktuře nebo záznamu.

  • Polí
  • Konstanty
  • Vlastnosti
  • Metody
  • Konstruktory
  • Události
  • Finalizátory
  • Indexátory
  • Operátoři
  • Vnořené typy

Další informace najdete v tématu Členové.

Přístupnost

Některé metody a vlastnosti by měly být volány nebo přístupné z kódu mimo třídu nebo strukturu, který se označuje jako klientský kód. Jiné metody a vlastnosti mohou být pouze pro použití v samotné třídě nebo struktuře. Je důležité omezit přístupnost kódu tak, aby se k němu mohl dostat jenom zamýšlený klientský kód. Pomocí následujících modifikátorů přístupu určíte, jak přístupné typy a jejich členové mají klientský kód:

Výchozí přístupnost je private.

Dědičnost

Třídy (ale ne struktury) podporují koncept dědičnosti. Třída odvozená z jiné třídy, která se nazývá základní třída, automaticky obsahuje všechny veřejné, chráněné a interní členy základní třídy s výjimkou jejích konstruktorů a finalizátorů.

Třídy lze deklarovat jako abstraktní, což znamená, že jedna nebo více metod nemají žádnou implementaci. I když abstraktní třídy nelze přímo instancovat, mohou sloužit jako báze pro jiné třídy, které poskytují chybějící implementaci. Třídy lze také deklarovat jako zapečetěné , aby se zabránilo tomu, že ostatní třídy zdědí z nich.

Další informace naleznete v tématu Dědičnost a polymorfismus.

Rozhraní

Třídy, struktury a záznamy mohou implementovat více rozhraní. Implementace z rozhraní znamená, že typ implementuje všechny metody definované v rozhraní. Další informace naleznete v tématu Rozhraní.

Obecné typy

Třídy, struktury a záznamy lze definovat pomocí jednoho nebo více parametrů typu. Klientský kód zadá typ, když vytvoří instanci typu. Například List<T> třída v System.Collections.Generic oboru názvů je definována s jedním parametrem typu. Klientský kód vytvoří instanci List<string> nebo List<int>, aby určil typ, který seznam obsahuje. Další informace najdete v tématu Obecné typy.

Statické typy

Třídy (ale ne struktury nebo záznamy) lze deklarovat jako static. Statická třída může obsahovat pouze statické členy a nelze vytvořit instanci s klíčovým slovem new . Při načítání programu se do paměti načte jedna kopie třídy a její členy jsou přístupné prostřednictvím názvu třídy. Třídy, struktury a záznamy mohou obsahovat statické členy. Další informace naleznete v tématu Statické třídy a statické členy třídy.

Vnořené typy

Třídu, strukturu nebo záznam lze vnořit do jiné třídy, struktury nebo záznamu. Další informace naleznete v tématu Vnořené typy.

Částečné typy

Část třídy, struktury nebo metody můžete definovat v jednom souboru kódu a další části v samostatném souboru kódu. Další informace naleznete v části Částečné třídy a metody.

Inicializátory objektů

Vytvořením instance a inicializace třídy nebo struktur objektů a kolekcí objektů můžete přiřadit hodnoty k jeho vlastnostem. Další informace naleznete v tématu Jak inicializovat objekty pomocí inicializátoru objektů.

Anonymní typy

V situacích, kdy není vhodné nebo nutné vytvořit pojmenovanou třídu, používáte anonymní typy. Pojmenované datové členy definují anonymní typy. Další informace naleznete v tématu Anonymní typy.

Členové rozšíření

Třídu můžete rozšířit bez vytvoření odvozené třídy vytvořením samostatného typu. Tento typ obsahuje metody, které lze volat, jako by patřily k původnímu typu. Další informace naleznete v tématu Rozšiřující metody.

Implicitně typované lokální proměnné

V rámci třídy nebo metody struktury můžete pomocí implicitního psaní dát kompilátoru pokyn k určení typu proměnné v době kompilace. Další informace najdete v tématu var (referenční dokumentace jazyka C#).

Záznamy

Modifikátor můžete přidat record do třídy nebo struktury. Záznamy jsou typy s předdefinovaným chováním rovnosti, která je založená na hodnotách. Záznam (buď record class nebo record struct) poskytuje následující funkce:

  • Stručná syntaxe pro vytvoření referenčního typu s neměnnými vlastnostmi
  • Rovnost hodnot. Dvě proměnné typu záznamu jsou stejné, pokud mají stejný typ, a pokud jsou pro každé pole hodnoty v obou záznamech stejné. Třídy používají rovnost odkazu: dvě proměnné typu třídy jsou stejné, pokud odkazují na stejný objekt.
  • Stručná syntaxe pro nedestruktivní mutaci. Výraz with umožňuje vytvořit novou instanci záznamu, která je kopií existující instance, ale se změněnými zadanými hodnotami vlastností.
  • Integrované formátování pro zobrazení Metoda ToString vytiskne název typu záznamu a názvy a hodnoty veřejných vlastností.
  • Podpora hierarchií dědičnosti ve třídách záznamů Třídy záznamů podporují dědičnost. Struktury záznamů nepodporují dědičnost.

Další informace naleznete v tématu Záznamy.

Specifikace jazyka C#

Další informace najdete ve specifikaci jazyka C#. Specifikace jazyka je konečným zdrojem syntaxe a použití jazyka C#.