C# öröklődés és polimorfizmus programpéldákkal
⚡ Okos összefoglaló
A C#-ban az öröklődés és a polimorfizmus két alapvető objektumorientált elv. Az öröklődés lehetővé teszi, hogy egy gyermekosztály újra felhasználja a szülőosztály mezőit és metódusait, míg a polimorfizmus lehetővé teszi, hogy egy metódusnév többféle formát öltsön.

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 feledd, hogy említettük ezt a hozzáférés-módosítót a Hozzáférésmódosító oktatóanyagNos, itt látható ennek a célja. Csak akkor tudja a gyermekosztály a szülőosztály mezőit használni, ha megvan ez a hozzáférés-módosító (védett).
Step 2) A második lépés az új gyermekosztályunk hozzáadása. Az osztály neve a következő lesz: „Guru99Tutorial”. Ebben a lépésben az alábbi kódot adjuk hozzá a Tutorial.cs fájlhoz. A kódot a Tutorial osztály definíciója után kell elhelyezni.
Code Magyarázat:-
- Az első lépés az, hogy létrehozzuk a Guru99Tutorial gyermekosztály. Azt is meg kell említenünk, hogy ez az osztály a Tutorial osztály gyermekosztálya lesz. Ezt a ':' kulcsszóval tehetjük meg.
- 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ály esetén továbbra is hozzáférhetünk ehhez a mezőhöz. Ez annak a ténynek köszönhető, hogy „GuruA „99Tutorial” a Tutorial osztály gyermekosztálya. Mivel a Tutorial osztály mezőit védettként tettük elérhetővé, az osztály hozzáférhet hozzájuk.
Step 3) Az utolsó lépés a fő Program.cs fájlunk módosítása. A konzolalkalmazásunkban a következő objektumot fogjuk létrehozni: Guru99Tutorial osztály. Ezzel az objektummal meghívjuk a RenameTutorial metódust. Ezután a GetTutorial metódus segítségével megjelenítjük a TutorialName mezőt.
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 Magyarázat:-
- Az első lépés egy objektum létrehozása a Guru99Tutorial osztály. Ez a 'new' kulcsszóval tehető meg. Fontos megjegyezni, hogy ezúttal nem a Tutorial osztály egy objektumát hozzuk létre.
- A RenameTutorial metódust használjuk. Guru99Tutorial osztály a TutorialName mező módosításához. Átadjuk a „.Net by” karakterláncot. Guru99”-et a RenameTutorial metódushoz.
- Ezután meghívjuk a GetTutorial metódust. Megjegyzendő, hogy bár ez a metódus nincs definiálva a Guru99Tutorial osztály esetén továbbra is hozzáférhetünk ehhez a metódushoz. A GetTutorial metódus kimenete ezután a Console.WriteLine metóduson keresztül jelenik meg a konzolon.
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átható, hogy a TutorialName mezőt átnevezték „.Net”-re a következő által: Guru99”. Ezt a gyermekosztály által meghívott RenameTutorial metódus tette lehetővé.
Mi a polimorfizmus a C#-ban?
polimorfizmus in C# egy OOPs koncepció, ahol egy névnek sokféle alakja lehet. Például van egy okostelefonod a kommunikációhoz. A választott kommunikációs mód bármi lehet. Lehet hívás, szöveges üzenet, képüzenet, e-mail stb. Tehát a cél közös, azaz a kommunikáció, de a megközelítésük eltérő. Ezt polimorfizmusnak nevezik.
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.
Code Magyarázat:-
1. és 2.) Az első lépés ugyanaz, mint a korábbi példáinkban. Tartjukping a SetTutorial metódus definíciója, ahogy van.
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ájlunk módosítása. A konzolalkalmazásunkban a következő objektumot fogjuk létrehozni: Guru99Oktatóanyag óra.
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 Magyarázat:-
- 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.







