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.
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.
Kód magyarázata: -
- 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.
- 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.
- 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.
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: -
- 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.
- 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.
- 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:
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.
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.
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: -
- 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.
- 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
- Hozzon létre egy külön metódust public int GetTutorialID néven
- Ebben a módszerben írja be a „return TutorialID” kódsort. Ezzel visszaadható a TutorialID a hívó programnak.
output:
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.