V tomto výukovém programu se naučíte
- Dědictví
- Polymorfismus
Co je dědičnost v C #?
Dědičnost je důležitý koncept v C #. Dědičnost je koncept, ve kterém definujete nadřazené třídy a podřízené třídy.
Podřízené třídy dědí metody a vlastnosti nadřazené třídy, ale zároveň mohou v případě potřeby také upravit chování metod. Podřízená třída může také v případě potřeby definovat vlastní metody.
Lepší porozumění získáte, když uvidíme tuto akci.
Pojďme se nyní podívat, jak můžeme do našeho kódu začlenit koncept dědičnosti.
Krok 1) Prvním krokem je změna kódu pro naši výukovou třídu. V tomto kroku přidáme níže uvedený kód do souboru Tutorial.cs.
Všimněte si, že nyní musíme přidat modifikátor přístupu 'protected' do pole TutorialID i TutorialName.
Nezapomeňte, že jsme tento modifikátor přístupu zmínili v tutoriálu Modifikátor přístupu. Tady vidíte účel toho mít. Pouze když máte tento modifikátor přístupu (chráněný), podřízená třída bude moci používat pole nadřazené třídy.
Krok 2) Druhým krokem je přidání naší nové podřízené třídy. Název této třídy bude „Guru99Tutorial“. V tomto kroku přidáme níže uvedený kód do souboru Tutorial.cs. Kód by měl být umístěn za definici třídy Tutorial.
Vysvětlení kódu: -
- Prvním krokem je vytvoření podřízené třídy Guru99Tutorial. Musíme také zmínit, že tato třída bude podřízenou třídou třídy Tutorial. To se provádí pomocí klíčového slova „:“.
- Dále definujeme metodu nazvanou RenameTutorial. Bude to použito k přejmenování pole TutorialName. Tato metoda přijímá řetězcovou proměnnou, která obsahuje nový název kurzu.
- Poté jsme do pole TutorialName přiřadili parametr pNewName.
Poznámka : - I když jsme nedefinovali pole TutorialName ve třídě „Guru99Tutorial“, stále máme přístup k tomuto poli. Důvodem je skutečnost, že „Guru99Tutorial“ je podřízená třída třídy Tutorial. A protože jsme vytvořili pole třídy Tutorial jako chráněná, může k nim tato třída přistupovat.
Krok 3) Posledním krokem je úprava našeho hlavního souboru Program.cs. V naší konzolové aplikaci uděláme objekt třídy Guru99Tutorial. S tímto objektem budeme volat metodu RenameTutorial. Poté pomocí metody GetTutorial zobrazíme pole TutorialName.
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{class Tutorial{protected int TutorialID;protected string TutorialName;public void SetTutorial(int pID,string pName){TutorialID=pID;TutorialName=pName;}public String GetTutorial(){return TutorialName;}}public class Guru99Tutorial:Tutorial{public void RenameTutorial(String pNewName){TutorialName=pNewName;}static void Main(string[] args){Guru99Tutorial pTutor=new Guru99Tutorial();pTutor.RenameTutorial(".Net by Guru99");Console.WriteLine(pTutor.GetTutorial());Console.ReadKey();}}}
Vysvětlení kódu: -
- Prvním krokem je vytvoření objektu pro třídu Guru99Tutorial. To se provádí pomocí klíčového slova „new“. Všimněte si, že tentokrát nevytváříme objekt třídy Tutorial.
- Ke změně pole TutorialName používáme metodu RenameTutorial třídy Guru99Tutorial. Řetězec „.Net od Guru99“ předáme metodě RenameTutorial.
- Potom zavoláme metodu GetTutorial. Všimněte si, že i když tato metoda není definována ve třídě Guru99Tutorial, stále máme přístup k této metodě. Výstup metody GetTutorial se poté zobrazí na konzoli pomocí metody Console.WriteLine.
Pokud je výše uvedený kód zadán správně a program je úspěšně proveden, zobrazí se následující výstup.
Výstup:
Z výstupu jasně vidíme, že pole TutorialName bylo přejmenováno na „.Net by Guru99“. To bylo možné pomocí metody RenameTutorial volané podřízenou třídou.
Co je polymorfismus v C #?
Polymorfismus je koncept OOP, kde jedno jméno může mít mnoho podob.
Například máte smartphone pro komunikaci. Zvolený komunikační režim může být cokoli. Může to být hovor, textová zpráva, obrazová zpráva, pošta atd. Společný cíl je tedy komunikace, ale jejich přístup je odlišný. Toto se nazývá polymorfismus.
Lepší porozumění získáte, když uvidíme tuto akci.
Pojďme se nyní podívat, jak můžeme do našeho kódu začlenit koncept Polymorfismu.
Krok 1) Prvním krokem je změna kódu pro naši výukovou třídu. V tomto kroku přidáme níže uvedený kód do souboru Tutorial.cs.
Vysvětlení kódu: -
1 a 2) První krok je stejný jako v našich dřívějších příkladech. Ponecháváme definici metody SetTutorial tak, jak je.
3) Tato metoda nastavuje TutorialID a TutorialName na základě parametrů pID a pName.
4) Zde provedeme změnu naší třídy, do které přidáme novou metodu se stejným názvem SetTutorial. Pouze tentokrát předáváme pouze jeden parametr, kterým je pName. V této metodě právě nastavujeme pole TutorialName na pName.
Krok 2) Posledním krokem je úprava našeho hlavního souboru Program.cs. V naší konzolové aplikaci uděláme objekt třídy Guru99Tutorial.
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 void SetTutorial(int pID,string pName){TutorialID=pID;TutorialName=pName;}public void SetTutorial(string pName){TutorialName=pName;}public String GetTutorial(){return TutorialName;}static void Main(string[] args){Tutorial pTutor=new Tutorial();pTutor.SetTutorial(1,"First Tutorial");Console.WriteLine(pTutor.GetTutorial());pTutor.SetTutorial("Second Tutorial");Console.WriteLine(pTutor.GetTutorial());Console.ReadKey();}}}
Vysvětlení kódu: -
- V prvním kroku používáme metodu SetTutorial se 2 parametry. Kde předáváme TutorialID i TutorialName této metodě.
- Ve druhém kroku nyní voláme metodu SetTutorial pouze s jedním parametrem. Právě předáváme TutorialName této metodě.
Pokud je výše uvedený kód zadán správně a program je spuštěn, zobrazí se následující výstup. Pokud jste chtěli také načíst ID výukového programu spolu s názvem výukového programu, postupujte podle níže uvedeného kroku
- Vytvořte samostatnou metodu nazvanou public int GetTutorialID
- V této metodě napište kódový řádek „return TutorialID.“ To lze použít k vrácení TutorialID volajícímu programu.
Výstup:
Z výstupu jasně vidíme, že obě metody byly úspěšně volány. Z tohoto důvodu byly do konzoly odeslány řetězce „First Tutorial“ a „Second Tutorial“.
souhrn
- Dědičnost je místo, kde podřízená třída dědí pole a metody nadřazené třídy. Podřízená třída pak může také definovat své vlastní metody.
- Polymorfismus je koncept OOP, kde jedno jméno může mít mnoho podob.