C# Dědičnost a polymorfismus s příklady programů

Co je dědičnost v C#?

Dědictví je důležitým konceptem 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 upravit chování metod. Podřízená třída může v případě potřeby také definovat vlastní metody.

Pojďme lépe porozumět dědičnosti C# na příkladu programu:

Příklad dědičnosti C#

Podívejme se nyní, jak můžeme začlenit koncept dědičnosti do našeho kódu.

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

Příklad dědičnosti C#

Všimněte si, že nyní musíme přidat modifikátor přístupu 'protected' do pole TutorialID i TutorialName.

Nezapomeňte, že jsme se o tomto modifikátoru 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ý), může podřízená třída používat pole nadřazené třídy.

Krok 2) Druhým krokem je přidání naší nové podtří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.

Příklad dědičnosti C#

Code Vysvětlení:-

  1. Prvním krokem je vytvoření GuruDítě třídy 99Tutorial. Je také třeba zmínit, že tato třída bude dceřinou třídou třídy Tutorial. To se provádí pomocí klíčového slova ':'.
  2. Dále definujeme metodu nazvanou RenameTutorial. Bude použit k přejmenování pole TutorialName. Tato metoda přijímá řetězcovou proměnnou, která obsahuje nový název kurzu.
  3. Poté jsme přiřadili parametr pNewName do pole TutorialName.
    Hodnocení: – I když jsme v „Gurutřída „99Tutorial“, stále máme přístup k tomuto poli. Je to proto, že „Guru„99Tutorial“ je podtřídou třídy Tutorial. A protože jsme nastavili pole třídy Tutorial jako chráněná, tato třída k nim má přístup.

Krok 3) Posledním krokem je úprava našeho hlavního souboru Program.cs. V naší konzolové aplikaci vytvoříme objekt typu GuruTřída 99Tutorial. S tímto objektem zavoláme metodu RenameTutorial. Poté zobrazíme pole TutorialName s pomocí metody GetTutorial.

Příklad dědičnosti C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 public 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(); 
  }
 }
}

Code Vysvětlení:-

  1. Prvním krokem je vytvoření objektu pro GuruTřída 99Tutorial. To se provádí pomocí klíčového slova 'new'. Všimněte si, že tentokrát nevytváříme objekt třídy Tutorial.
  2. Používáme metodu RenameTutorial z GuruTřída 99Tutorial pro změnu pole TutorialName. Předáme řetězec „.Net pomocí Guru99“ k metodě RenameTutorial.
  3. Poté zavoláme metodu GetTutorial. Všimněte si, že i když tato metoda není definována v GuruV případě třídy 99Tutorial máme k této metodě stále přístup. Výstup metody GetTutorial se poté zobrazí v konzoli prostřednictvím 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:

Příklad dědičnosti C#

Z výstupu jasně vidíme, že pole TutorialName bylo přejmenováno na „.Net uživatelem Guru99“. To bylo umožněno metodou RenameTutorial, kterou volala podřízená třída.

Co je polymorfismus v C#?

Polymorfismus v C# je koncept OOPs, kde jedno jméno může mít mnoho podob. Například máte smartphone pro komunikaci. Komunikační režim, který zvolíte, může být jakýkoli. Může to být hovor, SMS, obrázková zpráva, mail atd. Cíl je tedy společný, tedy komunikace, ale jejich přístup je jiný. Toto se nazývá polymorfismus.

Pomocí níže uvedeného příkladu programu získáte lepší porozumění polymorfismu C#:

Příklad polymorfismu C#

Podívejme se nyní, jak můžeme začlenit koncept polymorfismu do našeho kódu.

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

Příklad polymorfismu C#

Code Vysvětlení:-

1 a 2) První krok je stejný jako v našich předchozích příkladech. Jsme udržovániping definice metody SetTutorial tak, jak je.

3) Tato metoda nastaví TutorialID a TutorialName na základě parametrů pID a pName.

4) Zde provedeme změnu v naší třídě, kde 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ě pouze nastavujeme pole TutorialName na pName.

Krok 2) Posledním krokem je úprava našeho hlavního souboru Program.cs. V naší konzolové aplikaci vytvoříme objekt typu Guru99Výukový kurz.

Příklad polymorfismu C#

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

Code Vysvětlení:-

  1. V prvním kroku používáme metodu SetTutorial se 2 parametry. Kde této metodě předáváme jak TutorialID, tak TutorialName.
  2. Ve druhém kroku nyní voláme metodu SetTutorial pouze s jedním parametrem. Této metodě právě předáváme TutorialName.

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 v případě, že byste chtěli získat také ID výukového programu spolu s názvem výukového programu, měli byste postupovat podle níže uvedeného kroku

  1. Vytvořte samostatnou metodu nazvanou public int GetTutorialID
  2. V této metodě napište řádek kódu „return TutorialID“. To lze použít k vrácení TutorialID volajícímu programu.

Výstup:

Příklad polymorfismu C#

Z výstupu jasně vidíme, že obě metody byly volány úspěšně. Z tohoto důvodu byly do konzole odeslány řetězce „First Tutorial“ a „Second Tutorial“.

Shrnutí

  • Dědičnost je místo, kde podřízená třída zdědí pole a metody nadřazené třídy. Podřízená třída pak může také definovat své vlastní metody.
  • Polymorfismus v C# je koncept OOPs, kde jedno jméno může mít mnoho podob.

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