C# öröklődés és polimorfizmus programpéldákkal

Mi az öröklődés a C#-ban?

Öröklés a C# fontos fogalma. Az öröklődés egy olyan fogalom, amelyben meghatározza a szülőosztályokat és a gyermekosztályokat. A gyermekosztályok a szülőosztály metódusait és tulajdonságait öröklik, ugyanakkor szükség esetén módosíthatják a metódusok viselkedését is. A gyermekosztály szükség esetén saját metódusokat is meghatározhat.

Ismerjük meg jobban a C# öröklődését egy programpélda segítségével:

C# öröklődési példa

Lássuk most, hogyan építhetjük be a kódunkba az öröklődés fogalmát.

Step 1) Az első lépés a Tutorial osztályunk kódjának megváltoztatása. Ebben a lépésben hozzáadjuk az alábbi kódot a Tutorial.cs fájlhoz.

C# öröklődési példa

Vegye figyelembe, hogy most hozzá kell adnunk a „protected” hozzáférés-módosítót mind a TutorialID, mind a TutorialName mezőhöz.

Ne feledje, hogy ezt a hozzáférés-módosítót említettük az Access Modifier oktatóanyagában. Nos, itt láthatja ennek a célját. Az utódosztály csak akkor tudja használni a szülőosztály mezőit, ha rendelkezik ezzel a hozzáférés-módosítóval (védett).

Step 2) A második lépés az új gyermekosztály felvétele. Ennek az osztálynak a neve „Guru99Tutorial”. Ebben a lépésben hozzáadjuk az alábbi kódot a Tutorial.cs fájlhoz. A kódot a Tutorial osztálydefiníció után kell elhelyezni.

C# öröklődési példa

Kód magyarázata: -

  1. Az első lépés a Guru99Tutorial gyermekosztály létrehozása. Azt is meg kell említenünk, hogy ez az osztály a Tutorial osztály gyermekosztálya lesz. Ezt a ':' kulcsszó teszi.
  2. Ezután meghatározzuk a RenameTutorial nevű metódust. Ez a TutorialName mező átnevezésére szolgál. Ez a metódus elfogad egy karakterlánc-változót, amely tartalmazza az oktatóanyag új nevét.
  3. Ezután hozzárendeltük a pNewName paramétert a TutorialName mezőhöz.
    Megjegyzések: – Annak ellenére, hogy nem definiáltuk a TutorialName mezőt a „Guru99Tutorial” osztályban, még mindig el tudjuk érni ezt a mezőt. Ennek az az oka, hogy a „Guru99Tutorial” a Tutorial osztály gyermekosztálya. És mivel a Tutorial osztály mezőit védettnek tettük, ez az osztály elérheti azokat.

Step 3) Az utolsó lépés a fő Program.cs fájl módosítása. Konzolalkalmazásunkban elkészítjük a Guru99Tutorial osztály objektumát. Ezzel az objektummal a RenameTutorial metódust fogjuk meghívni. Ezután megjelenítjük a TutorialName mezőt a GetTutorial metódus segítségével.

C# öröklődési példa

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

Kód magyarázata: -

  1. Az első lépés egy objektum létrehozása a Guru99Tutorial osztály számára. Ez az "új" kulcsszóval történik. Vegye figyelembe, hogy ezúttal nem a Tutorial osztály objektumát hozzuk létre.
  2. A TutorialName mező módosításához a Guru99Tutorial osztály RenameTutorial metódusát használjuk. A „.Net by Guru99” karakterláncot átadjuk a RenameTutorial metódusnak.
  3. Ezután a GetTutorial metódust hívjuk. Vegye figyelembe, hogy bár ez a metódus nincs definiálva a Guru99Tutorial osztályban, továbbra is hozzáférhetünk ehhez a metódushoz. A GetTutorial metódus kimenete ezután megjelenik a konzolon a Console.WriteLine metóduson keresztül.

Ha a fenti kódot megfelelően beírta és a program sikeresen lefut, a következő kimenet jelenik meg.

output:

C# öröklődési példa

A kimenetből jól láthatjuk, hogy a TutorialName mezőt átnevezték „.Net by Guru99”-re. Ezt a gyermekosztály által meghívott RenameTutorial metódus tette lehetővé.

Mi a polimorfizmus a C#-ban?

polimorfizmus A C#-ban egy OOP-fogalom, ahol egy névnek több alakja is lehet. Például van egy okostelefonja a kommunikációhoz. A választott kommunikációs mód bármi lehet. Lehet hívás, sms, képüzenet, levél stb. Tehát a cél közös, vagyis a kommunikáció, de más a megközelítésük. Ezt polimorfizmusnak hívják.

Az alábbi példaprogram segítségével jobban megértheti a C# polimorfizmust:

Példa a C# polimorfizmusra

Lássuk most, hogyan építhetjük be kódunkba a polimorfizmus fogalmát.

Step 1) Az első lépés a Tutorial osztályunk kódjának megváltoztatása. Ebben a lépésben hozzáadjuk az alábbi kódot a Tutorial.cs fájlhoz.

Példa a C# polimorfizmusra

Kód magyarázata: -

1 és 2) Az első lépés ugyanaz, mint a korábbi példákban. A SetTutorial metódus definícióját megtartjuk.

3) Ez a módszer beállítja a TutorialID és a TutorialName paramétereket a pID és pName paraméterek alapján.

4) Itt módosítjuk az osztályunkat, és hozzáadunk egy új metódust a SetTutorial névvel azonos néven. Csak ezúttal csak egy paramétert adunk át, ez a pName. Ebben a módszerben csak a TutorialName mezőt állítjuk be pName értékre.

Step 2) Az utolsó lépés a fő Program.cs fájl módosítása. Konzolalkalmazásunkban elkészítjük a Guru99Tutorial osztály objektumát.

Példa a C# polimorfizmusra

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

Kód magyarázata: -

  1. Első lépésben a SetTutorial metódust használjuk 2 paraméterrel. Ahol a TutorialID-t és a TutorialName-et is átadjuk ennek a metódusnak.
  2. A második lépésben most a SetTutorial metódust hívjuk meg egyetlen paraméterrel. Csak a TutorialName-t adjuk át ennek a metódusnak.

Ha a fenti kódot helyesen adta meg és a program lefut, a következő kimenet jelenik meg. Ha az oktatóprogram azonosítóját is le szeretné kérni az oktatóanyag nevével együtt, kövesse az alábbi lépést

  1. Hozzon létre egy külön metódust public int GetTutorialID néven
  2. Ebben a módszerben írja be a „return TutorialID” kódsort. Ezzel visszaadható a TutorialID a hívó programnak.

output:

Példa a C# polimorfizmusra

A kimenetből jól látható, hogy mindkét metódust sikeresen meghívtuk. Emiatt a „First Tutorial” és a „Second Tutorial” karakterláncok elküldésre kerültek a konzolra.

Összegzésként

  • Az öröklődés az, amikor egy gyermekosztály örökli a szülőosztály mezőit és metódusait. A gyermekosztály ezután saját metódusait is meghatározhatja.
  • Polimorfizmus be C# egy OOP-koncepció, ahol egy névnek több alakja is lehet.