Moștenirea C# și polimorfismul cu exemple de programe
Ce este moștenirea în C#?
Moştenire este un concept important de C#. Moștenirea este un concept în care definiți clasele părinte și clasele copil. Clasele copil moștenesc metode și proprietăți ale clasei părinte, dar, în același timp, pot modifica și comportamentul metodelor dacă este necesar. Clasa copil poate defini și metode proprii, dacă este necesar.
Să înțelegem mai bine moștenirea C# printr-un exemplu de program:
Exemplu de moștenire C#
Să vedem acum cum putem încorpora conceptul de moștenire în codul nostru.
Pas 1) Primul pas este schimbarea codului pentru clasa noastră Tutorial. În acest pas, adăugăm codul de mai jos în fișierul Tutorial.cs.
Rețineți că acum trebuie să adăugăm modificatorul de acces „protejat” atât în câmpul TutorialID, cât și în TutorialName.
Amintiți-vă că am menționat acest modificator de acces în tutorialul Modificator de acces. Ei bine, aici puteți vedea scopul de a avea asta. Numai atunci când aveți acest modificator de acces (protejat), clasa copil poate folosi câmpurile clasei părinte.
Pas 2) Al doilea pas este să adăugăm noua noastră clasă de copii. Numele acestei clase va fi „Guru99Tutorial”. În acest pas, adăugăm codul de mai jos în fișierul Tutorial.cs. Codul trebuie plasat după definiția clasei Tutorial.
Explicația codului: -
- Primul pas este crearea clasei pentru copii Guru99Tutorial. De asemenea, trebuie să menționăm că această clasă va fi o clasă copil a clasei Tutorial. Acest lucru se realizează prin cuvântul cheie „:”.
- În continuare, definim o metodă numită RenameTutorial. Va fi folosit pentru a redenumi câmpul TutorialName. Această metodă acceptă o variabilă șir care conține noul nume al Tutorialului.
- Apoi am atribuit parametrul pNewName câmpului TutorialName.
notițe: – Chiar dacă nu am definit câmpul TutorialName în clasa „Guru99Tutorial”, totuși putem accesa acest câmp. Acest lucru se datorează faptului că „Guru99Tutorial” este o clasă copil a clasei Tutorial. Și pentru că am făcut ca câmpurile clasei Tutorial să fie protejate, acestea pot fi accesate de această clasă.
Pas 3) Ultimul pas este modificarea fișierului nostru principal Program.cs. În aplicația noastră de consolă, vom crea un obiect din clasa Guru99Tutorial. Cu acest obiect, vom apela metoda RenameTutorial. Apoi vom afișa câmpul TutorialName cu ajutorul metodei GetTutorial.
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(); } } }
Explicația codului: -
- Primul pas este să creați un obiect pentru clasa Guru99Tutorial. Acest lucru se face prin cuvântul cheie „nou”. Rețineți că de data aceasta nu creăm un obiect al clasei Tutorial.
- Folosim metoda RenameTutorial a clasei Guru99Tutorial pentru a schimba câmpul TutorialName. Trecem șirul „.Net by Guru99” la metoda RenameTutorial.
- Apoi numim metoda GetTutorial. Rețineți că, deși această metodă nu este definită în clasa Guru99Tutorial, totuși putem accesa această metodă. Ieșirea metodei GetTutorial este apoi afișată pe consolă prin metoda Console.WriteLine.
Dacă codul de mai sus este introdus corect și programul este executat cu succes, va fi afișată următoarea ieșire.
ieșire:
Din rezultat, putem vedea clar că câmpul TutorialName a fost redenumit „.Net by Guru99”. Acest lucru a fost posibil prin metoda RenameTutorial numită de clasa copil.
Ce este polimorfismul în C#?
polimorfismul în C# este un concept OOP în care un nume poate avea mai multe forme. De exemplu, ai un smartphone pentru comunicare. Modul de comunicare pe care îl alegeți ar putea fi orice. Poate fi un apel, un mesaj text, un mesaj ilustrat, e-mail etc. Deci, scopul este comun, adică comunicarea, dar abordarea lor este diferită. Aceasta se numește polimorfism.
Veți obține o mai bună înțelegere a polimorfismului C# prin exemplul de program de mai jos:
Exemplu de polimorfism C#
Să vedem acum cum putem încorpora conceptul de polimorfism în codul nostru.
Pas 1) Primul pas este schimbarea codului pentru clasa noastră Tutorial. În acest pas, adăugăm codul de mai jos în fișierul Tutorial.cs.
Explicația codului: -
1 și 2) Primul pas este același ca în exemplele noastre anterioare. Păstrăm definiția metodei SetTutorial așa cum este.
3) Această metodă setează TutorialID și TutorialName pe baza parametrilor pID și pName.
4) Aici facem o schimbare în clasa noastră în care adăugăm o nouă metodă cu același nume de SetTutorial. Numai că de data aceasta trecem doar un parametru, care este pName. În această metodă, doar setăm câmpul TutorialName la pName.
Pas 2) Ultimul pas este modificarea fișierului nostru principal Program.cs. În aplicația noastră de consolă, vom crea un obiect din clasa 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(); } } }
Explicația codului: -
- În primul pas, folosim metoda SetTutorial cu 2 parametri. Unde trecem atât TutorialID cât și TutorialName acestei metode.
- În al doilea pas, apelăm acum metoda SetTutorial cu un singur parametru. Doar trecem TutorialName acestei metode.
Dacă codul de mai sus este introdus corect și programul este rulat, va fi afișată următoarea ieșire. Dacă în cazul în care doriți să obțineți și ID-ul tutorialului împreună cu numele tutorialului, ar trebui să urmați pasul de mai jos
- Creați o metodă separată numită public int GetTutorialID
- În acea metodă scrieți linia de cod „return TutorialID”. Acesta poate fi folosit pentru a returna TutorialID programului apelant.
ieșire:
Din rezultat, putem vedea clar că ambele metode au fost apelate cu succes. Din acest motiv, șirurile „Primul Tutorial” și „Al doilea Tutorial” au fost trimise la consolă.
Rezumat
- Moștenirea este locul în care o clasă copil moștenește câmpurile și metodele clasei părinte. Clasa copil își poate defini apoi propriile metode.
- Polimorfismul în C# este un concept OOP în care un nume poate avea mai multe forme.