c concepts constructor
V tomto výukovém programu jsou vysvětleny některé důležité koncepty programování v C #, například konstruktor, destruktory, statická třída, struktury a výčty:
V jednom z našich předchozích kurzů o objektech a třídách jsme zjistili, co jsou třída a objekt.
Objekt je podobný objektu z reálného světa a třída je logickou sbírkou podobných druhů objektů. Je to jeden z nejzákladnějších typů přítomných v C #. V tomto kurzu se ponoříme hluboko do dalších souvisejících konceptů C #.
=> Prozkoumejte zde kompletní sérii školení C #
V tomto tutoriálu se budeme učit o některých důležitých aspektech tříd a jak je můžeme použít v našich programech. Pokusíme se vytvořit jednoduché C # programy založené na konceptech, které jsme se naučili v našich předchozích cvičeních.
Co se naučíte:
- Co je konstruktor v C #?
- Destruktory v C #
- Statické členy ve třídě
- Statická třída v C #
- Struktury v C #
- Rozdíl mezi strukturou a třídou
- Struktura: Definice
- Výčty v C #
- Vlastnosti v C #
- Závěr
- Doporučené čtení
Co je konstruktor v C #?
Konstruktor je speciální typ metody v programovacím jazyce C #, který je volán nebo vyvolán automaticky, když je vytvořen objekt dané třídy.
Jeho hlavní funkcí je inicializace datových členů nově vytvořeného objektu. Jedním z nejvýraznějších rysů konstruktoru je jeho název. Má stejný název jako třída.
Konstruktory jsou v zásadě dvou typů:
- Výchozí
- Parametrizováno
C # výchozí konstruktor
Jak název napovídá, výchozí konstruktor je základní konstruktor třídy. Nemá žádný argument a je vyvolán přímo v době vytváření objektu.
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Výstupem následujícího programu bude:
Konstruktor byl vyvolán
Vysvětlení
Ve třídě „Program“ jsme definovali konstruktor „Program“. Nyní, když inicializujeme třídu uvnitř hlavní metody, je konstruktor vyvolán automaticky.
Proto bude vyvolán jakýkoli fragment kódu, který jsme udržovali uvnitř konstruktoru. Zde jsme vytiskli zprávu „Konstruktor byl vyvolán“ v složených závorkách konstruktoru, takže když inicializujeme třídu, konstruktor se ve výchozím nastavení inicializuje a zpráva se vytiskne jako výstup.
Parametrizovaný konstruktor
Jak název napovídá, parametrizovanými konstruktory jsou konstruktor s parametry. Tyto konstruktory se používají k předání různých hodnot objektům.
public class Details { public Details(int a, int b){ int c = a+b; Console.WriteLine('The sum is: '+ c); } } public class Program { public static void Main(string() args) { Details d = new Details(2, 3); } }
Výstupem následujícího programu bude:
nejlepší způsob, jak převést videa z YouTube na mp3
Součet je: 5
Vysvětlení
V našem předchozím příkladu s výchozím konstruktorem máme naši hlavní metodu ve stejné třídě. V tomto příkladu máme hlavní metodu v jiné třídě.
Máme jednu třídu s názvem „Podrobnosti“, která obsahuje parametrizovaný konstruktor přijímající dvě celočíselné hodnoty. Uvnitř konstruktoru tiskneme součet celých čísel. Máme další třídu nazvanou „Program“, která obsahuje naši hlavní metodu. Uvnitř hlavní metody jsme inicializovali třídu „Podrobnosti“.
Jak již bylo vysvětleno dříve, při inicializaci třídy jsou její konstruktory volány automaticky. V tomto případě tedy byla vyvolána metoda konstruktoru „Podrobnosti“ a když jsme předali parametr během inicializace, vytiskne výstup.
Destruktory v C #
Destruktory jsou pravým opakem konstruktérů. Jedná se o speciální metodu třídy, která je vyvolána, když objekt třídy vyjde z rozsahu. Podobně jako konstruktor je i název destruktoru přesně stejný jako název třídy, ale s předponou „~“ (vlnovka).
Destruktor nepřijímá žádný parametr, nevrací žádnou hodnotu. Destruktor ničí objekty třídy, proto se používá hlavně k uvolnění paměti po spuštění programu. Další důležitou věcí, kterou je třeba si o destruktoru všimnout, je, že jej nelze přetížit ani zdědit.
Příklad ničitelů:
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } ~Program(){ Console.WriteLine('Destructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Výstupem následujícího programu bude:
Konstruktor byl vyvolán
Destruktor byl vyvolán
Vysvětlení
Použili jsme stejný příklad, který jsme použili k učení konstruktoru. Právě jsme přidali destruktor do programové třídy (~ Program). Když inicializujeme objekt třídy, vyvolá se konstruktor a vytvoří se objekt třídy. Tím se do konzoly vytiskne fráze „Konstruktor byl vyvolán“.
Když bylo provedení dokončeno a objekt třídy vypršel z rozsahu, program se posune směrem k destruktoru. Poté je vyvolán destruktor, který následně zničí objekt. Tady jsme vytiskli zprávu uvnitř destruktoru, která se po vyvolání destruktoru vytiskne na konzolu.
Statické členy ve třídě
Členy třídy lze prohlásit za statické pomocí klíčového slova static. Když je objekt deklarován jako statický, bez ohledu na počet vytvořených objektů bude existovat pouze jedna kopie statického objektu.
Být statický znamená, že bude existovat jedna instance člena, který bude existovat pro danou třídu. To znamená, že hodnotu statické funkce nebo proměnných uvnitř třídy lze vyvolat, aniž byste pro ně vytvořili objekt.
Statické proměnné se používají k deklaraci konstant, protože jejich hodnoty lze získat přímo vyvoláním třídy, nikoli vytvořením její instance.
Příklad:
public class Details { public static void stat(){ Console.WriteLine('Static method invoked'); } } public class Program { public static void Main(string() args) { Details.stat(); } }
Výstupem následujícího programu bude:
Vyvolána statická metoda
Vysvětlení
Ve výše uvedeném příkladu jsme vytvořili třídu „Podrobnosti“, která obsahuje statickou metodu „stat“. Máme další třídu „Program“, která obsahuje hlavní metodu. V našich předchozích tématech jsme viděli, jak můžeme inicializovat třídu pro přístup k metodám. Ale jak jsme již diskutovali, ke statickým členům třídy lze přistupovat pomocí inicializace objektu třídy.
V hlavní metodě jsme tedy právě vyvolali metodu pomocí třídy přímo bez vytvoření jakéhokoli objektu. Výstup programu provedl kód napsaný uvnitř statické metody. V tomto případě jsme vytiskli zprávu do konzoly.
co je dev c ++
Statická třída v C #
Statická třída je podobná normální třídě v C #. Statická třída může mít pouze statické členy a nelze ji vytvořit instanci. Statická třída se používá k zajištění toho, že třída není vytvořena. Statická třída je deklarována pomocí klíčového slova static před třídou klíčového slova během deklarace.
Příklad:
public static class Details { public static void multiply(int a, int b){ int c = a*b; Console.WriteLine('Multiplication result is: '+c); } } public class Program { public static void Main(string() args) { Details.multiply(2,8); } }
Výstupem následujícího programu bude:
Výsledek násobení je: 16
Vysvětlení
Ve výše uvedeném příkladu jsme vytvořili statickou třídu „Podrobnosti“ a uvnitř statické třídy jsme vytvořili další statickou metodu „znásobit“. Uvnitř metody máme několik fragmentů kódu, které chceme provést. Máme také další třídu „Program“ s hlavní metodou.
Uvnitř hlavní metody jsme vyvolali metodu multiply přítomnou uvnitř statické třídy. Pokud se podíváte na naši hlavní metodu, uvidíte, že jsme neinicializovali nebo nevytvořili objekt pro statickou třídu, místo toho jsme přímo vyvolali třídu z hlavní metody.
Když tedy přímo vyvoláme metodu multiply pomocí názvu třídy a poskytnutím parametrů, provede kód a vytiskne výstup.
Struktury v C #
Entita typu hodnoty v C # se nazývá struktura. Pomáhá uživateli ukládat související data několika různých datových typů do jedné proměnné. Jak je uvedeno, struktura je entita hodnotového typu, která obsahuje pole, metody, konstruktory, operátory, události atd. Struktura je deklarována pomocí klíčového slova „struct“.
Vlastnosti struktur:
- Může zahrnovat konstanty, metody, vlastnosti, index, operátory, konstruktory atd.
- Nemůže mít žádný výchozí konstruktor.
- Může implementovat rozhraní, ale nemůže dědit s jinými strukturami nebo třídami.
- Struktury je nutné inicializovat pomocí nového klíčového slova pro použití.
Rozdíl mezi strukturou a třídou
Struct a Class se mohou určitým způsobem cítit navzájem podobné, ale mají několik rozdílů.
Rozdíly zahrnují:
- Struktura je typ hodnoty, zatímco třída je referenční typ.
- Nové klíčové slovo je nutné k inicializaci struktur.
- Struktury mohou mít pouze parametrizovaný konstruktor a na druhé straně může mít třída výchozí i parametrizované konstruktory.
Struktura: Definice
Strukturu lze definovat pomocí klíčového slova struct. Struktura může definovat nový datový typ s několika různými členy pro program.
Strukturu lze inicializovat podobným způsobem jako při inicializaci objektu, tj. Pomocí nového klíčového slova. Jelikož struktura je entita typu hodnoty, je rychlejší než objekt třídy. Kdekoli je potřeba ukládat data, musíme použít strukturu. Na druhou stranu, pokud potřebujete přenést data, je vhodné použít třídu než strukturu.
Příklad:
public struct Cuboid { public int length; public int width; public int height; } public class Program { public static void Main(string() args) { Cuboid cb = new Cuboid(); cb.length = 10; cb.width = 20; cb.height = 30; Console.WriteLine('The volume of cuboid is: {0}', (cb.length*cb.width*cb.height)); } }
Výstupem následujícího programu bude:
Objem kvádru je: 6000
Vysvětlení
Ve výše uvedeném příkladu jsme definovali strukturní kvádr, uvnitř kterého jsme uložili datové typy pro délku, šířku a výšku kvádru. Máme další třídní program, kde máme naši hlavní metodu.
V hlavní metodě inicializujeme strukturu „Cuboid“ pomocí nového klíčového slova. Poté jsme objekt použili k volání a přiřazení hodnot k datovým typům uloženým ve struktuře. Poté jsme provedli operaci s proměnnými ze struktury a výsledek vytiskli na konzoli.
Pokud tedy chcete použít jakoukoli vlastnost, událost nebo metodu, musí být struktura inicializována pomocí nového klíčového slova, jinak vám dá chybu kompilace.
Výčty v C #
Enum je sada celočíselných konstant a podobně jako struktura je také entitou hodnotového typu. Používá se hlavně k deklaraci seznamu celých čísel pomocí klíčového slova „enum“ uvnitř oboru názvů, třídy nebo dokonce struktury. Ve výčtu poskytujeme název každé z celočíselných konstant, abychom je mohli odkazovat pomocí jejich příslušných jmen.
Výčet může mít pevný počet konstant. Pomáhá při zvyšování bezpečnosti a lze s ní také procházet.
Vlastnosti Enum
- Enum zlepšuje čitelnost a udržovatelnost kódu poskytováním smysluplných jmen konstantám.
- Enum nelze použít s konstantami typu řetězce.
- Výčet může obsahovat konstanty jako int, long, short, byte atd.
- Ve výchozím nastavení začíná hodnota výčtových konstant nulou
Deklarace výčtu
Syntaxe pro deklarování výčtu je uvedena níže.
enum { list of integer constants };
Všechny konstanty výčtu mají výchozí hodnoty. Hodnota začíná na 0 a postupně se posouvá nahoru.
Příklad:
public enum Cuboid{ length, width, height } public class Program { public static void Main(string() args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Výstupem následujícího programu bude:
Délka je: 0
Šířka je: 1
Výška je: 2
Vysvětlení
Pracovali jsme s podobným příkladem, který jsme se naučili během struktury. V tomto příkladu jsme vytvořili výčet s názvem Cuboid. Tento výčet obsahuje tři členy, tj. Délku, šířku a výšku.
Máme další třídní program, ve kterém máme naši hlavní metodu. K převodu proměnných typu enum na celočíselný typ bylo použito explicitní přetypování, poté jsme jejich hodnoty uložili do různých proměnných uvnitř hlavní metody a vytiskli je do konzoly.
Ve výchozím nastavení bude hodnota prvního výčtu nulová, druhá bude mít 1 atd. Když jsme tedy tiskli hodnoty, dostali jsme výše uvedený výstup.
Změna hodnoty výčtu
Enum také umožňuje uživatelům změnit výchozí počáteční index členů. Jakmile změníte počáteční index proměnné, u následujících členů budou jejich hodnoty aktualizovány v přírůstkové posloupnosti.
Pojďme přiřadit hodnotu prvnímu členu výčtu, který jsme definovali v našem předchozím příkladu, a uvidíme, co se stane:
public enum Cuboid { length = 10, width, height } public class Program { public static void Main(string() args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Výstupem následujícího programu bude:
Délka je: 10
Šířka je: 11
Výška je: 12
Vysvětlení
Když jsme prvnímu členu výčtu přiřadili hodnotu, všechny následující členy výčtu budou přiřazeny s přírůstkem této hodnoty. Jak jsme definovali, první hodnota 10, následná hodnota 11 a další 12.
Uživatel může přiřadit libovolnou hodnotu podle svého výběru a všichni členové výčtu budou automaticky přiřazeni s přírůstkem hodnot definovaných uživatelem.
Vlastnosti v C #
Vlastnosti v C # jsou v podstatě pojmenovaným členem rozhraní, tříd a struktury. Vlastnosti jsou rozšířením členských proměnných / metody struktury nebo třídy. Používají se ke čtení, zápisu nebo ke změně hodnoty soukromých polí.
Vlastnosti jsou přístupné stejně jako pole. Mají přístupové objekty, které lze použít k získání, nastavení a výpočtu hodnot. Můžeme také dát logiku při nastavování hodnot ve vlastnostech. Může být také použit s privátní třídou, která omezuje přístup zvenčí, ale zároveň umožňuje uživateli použít vlastnosti pro získání nebo nastavení hodnot.
Co jsou doplňky?
Přistupující objekty vlastnosti představují příkazy, které lze použít ke čtení, zápisu nebo výpočtu dané vlastnosti. Deklarace majetku může obsahovat get, set nebo obojí.
Příklad:
public class Cube { private int side; //Declare a Side property of type integer public int Side{ get{ return side; } set{ side = value; } } } public class Program { public static void Main(string() args) { Cube cb = new Cube(); cb.Side = 5; Console.WriteLine('The volume of cube is :{0}', (cb.Side * cb.Side* cb.Side)); } }
Když je výše uvedený fragment kódu úspěšně zkompilován a spuštěn, je pozorován následující výstup.
Objem krychle je: 125
Vysvětlení
Ve výše uvedeném příkladu máme třídu „Cube“, uvnitř které jsme deklarovali vlastnost „Side“ typu integer. Poté jsme dostali a nastavili vlastnost, kde jsme se vrátili, a poskytli hodnotu proměnné straně.
Otázky a odpovědi na rozhovor s kódováním Java
Máme další třídu „Program“ s hlavní metodou, uvnitř které jsme inicializovali třídu Cube a poskytli hodnotu pro vlastnost Side, a poté jsme vypočítali výsledek do konzoly.
Závěr
V tomto kurzu jsme se dozvěděli o členských funkcích třídy. Členská funkce může fungovat s jakýmkoli objektem třídy, kde je přítomna. Dozvěděli jsme se také o konstruktorech a destruktorech.
Konstruktory jsou inicializovány automaticky v době vytváření objektu třídy, zatímco destruktory ničí třídu a používají se hlavně k odstranění alokace paměti po dokončení spuštění. Konstruktory mohou být dvou typů, tj. Výchozí a parametrizované.
Destruktor nepřijímá žádný parametr ani nevrací žádnou hodnotu. Konstruktor i destruktory mají názvy, které jsou přesně stejné jako název třídy. Zjistili jsme také o statických proměnných a statické třídě a o tom, jak k nim lze přistupovat bez použití instancí tříd. Zjistili jsme, že statická třída může mít pouze statické členy.
Diskutovali jsme také o strukturách nebo strukturách. Struktury jsou entity typu hodnoty a je třeba je inicializovat pro přístup.
Diskutovalo se také o výčtu a vlastnostech C #. Výčet je sada pojmenované celočíselné konstanty. Podobně jako struktura, je to také entita hodnotového typu. Výčet bude mít své členy a každý člen bude mít svou vlastní výchozí hodnotu.
Na konci jsme diskutovali o vlastnostech, které jsou rozšířením členských proměnných / metody struktury nebo třídy. Používají se k získání, nastavení nebo změně hodnoty soukromých polí.
=> Podívejte se na naši kompletní sérii školení C # zde
Doporučené čtení
- Statické v C ++
- Dědičnost v C ++
- Třídy a objekty v C ++
- Použití třídy Select Selenium pro zpracování prvků rozevíracího seznamu na webové stránce - Selenium Tutorial # 13
- Runtime polymorfismus v C ++
- Funkce přátel v C ++
- Mocking soukromé, statické a neplatné metody pomocí Mockito
- C # třídy a objekty: Podrobný výukový program s příklady