C# nasljeđivanje i polimorfizam s primjerima programa
Što je nasljeđivanje u C#?
Nasljeđivanje je važan koncept C#. Nasljeđivanje je koncept u kojem definirate roditeljske klase i podređene klase. Podređene klase nasljeđuju metode i svojstva nadređene klase, ali u isto vrijeme mogu i modificirati ponašanje metoda ako je potrebno. Klasa dijete također može definirati vlastite metode ako je potrebno.
Hajdemo bolje razumjeti C# nasljeđivanje pomoću primjera programa:
Primjer nasljeđivanja C#
Pogledajmo sada kako možemo ugraditi koncept nasljeđivanja u naš kod.
Korak 1) Prvi korak je promjena koda za našu klasu Tutorial. U ovom koraku dodajemo donji kod u datoteku Tutorial.cs.
Imajte na umu da sada moramo dodati modifikator pristupa 'protected' u polje TutorialID i TutorialName.
Zapamtite da smo spomenuli ovaj modifikator pristupa u vodiču za modifikator pristupa. Pa ovdje možete vidjeti svrhu ovoga. Samo kada imate ovaj modifikator pristupa (zaštićen), podređena klasa može koristiti polja nadređene klase.
Korak 2) Drugi korak je dodavanje naše nove podređene klase. Naziv ove klase bit će "Guru99Tutorial". U ovom koraku dodajemo donji kod u datoteku Tutorial.cs. Kod bi trebao biti postavljen nakon definicije klase Tutorial.
Objašnjenje koda:-
- Prvi korak je stvaranje podređene klase Guru99Tutorial. Također moramo spomenuti da će ova klasa biti podređena klasa Tutorial klase. To se radi pomoću ključne riječi ':'.
- Zatim definiramo metodu koja se zove RenameTutorial. Koristit će se za preimenovanje polja TutorialName. Ova metoda prihvaća varijablu niza koja sadrži novi naziv vodiča.
- Zatim smo dodijelili parametar pNewName polju TutorialName.
bilješke: – Iako nismo definirali polje TutorialName u klasi “Guru99Tutorial”, još uvijek možemo pristupiti ovom polju. To je zbog činjenice da je “Guru99Tutorial” podređena klasa klase Tutorial. A budući da smo polja klase Tutorial učinili zaštićenima, ova klasa im može pristupiti.
Korak 3) Zadnji korak je izmjena naše glavne datoteke Program.cs. U našoj konzolnoj aplikaciji napravit ćemo objekt klase Guru99Tutorial. S ovim objektom ćemo pozvati metodu RenameTutorial. Zatim ćemo prikazati polje TutorialName uz pomoć metode 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(); } } }
Objašnjenje koda:-
- Prvi korak je kreiranje objekta za klasu Guru99Tutorial. To se radi pomoću ključne riječi 'new'. Imajte na umu da ovaj put ne stvaramo objekt klase Tutorial.
- Koristimo metodu RenameTutorial klase Guru99Tutorial za promjenu polja TutorialName. Prosljeđujemo niz “.Net by Guru99” metodi RenameTutorial.
- Zatim pozivamo metodu GetTutorial. Imajte na umu da iako ova metoda nije definirana u klasi Guru99Tutorial, još uvijek možemo pristupiti ovoj metodi. Izlaz metode GetTutorial zatim se prikazuje na konzoli putem metode Console.WriteLine.
Ako se gornji kod ispravno unese i program se uspješno izvede, prikazat će se sljedeći izlaz.
Izlaz:
Iz rezultata jasno možemo vidjeti da je polje TutorialName preimenovano u “.Net by Guru99”. Ovo je omogućeno metodom RenameTutorial koju je pozvala klasa dijete.
Što je polimorfizam u C#?
polimorfizam u C# je OOP koncept gdje jedno ime može imati mnogo oblika. Na primjer, imate pametni telefon za komunikaciju. Način komunikacije koji odaberete može biti bilo koji. To može biti poziv, SMS poruka, slikovna poruka, mail i sl. Dakle, cilj je zajednički, odnosno komunikacija, ali im je pristup drugačiji. To se zove polimorfizam.
Dobit ćete bolje razumijevanje C# polimorfizma pomoću donjeg primjera programa:
Primjer C# polimorfizma
Pogledajmo sada kako možemo ugraditi koncept polimorfizma u naš kod.
Korak 1) Prvi korak je promjena koda za našu klasu Tutorial. U ovom koraku dodajemo donji kod u datoteku Tutorial.cs.
Objašnjenje koda:-
1 & 2) Prvi korak je isti kao u našim ranijim primjerima. Zadržavamo definiciju metode SetTutorial kakva jest.
3) Ova metoda postavlja TutorialID i TutorialName na temelju parametara pID i pName.
4) Ovo je mjesto gdje vršimo promjenu u našoj klasi pri čemu dodajemo novu metodu s istim imenom SetTutorial. Samo ovaj put prosljeđujemo samo jedan parametar koji je pName. U ovoj metodi samo postavljamo polje TutorialName na pName.
Korak 2) Zadnji korak je izmjena naše glavne datoteke Program.cs. U našoj konzolnoj aplikaciji napravit ćemo objekt klase 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(); } } }
Objašnjenje koda:-
- U prvom koraku koristimo metodu SetTutorial s 2 parametra. Gdje ovoj metodi prosljeđujemo i TutorialID i TutorialName.
- U drugom koraku sada pozivamo metodu SetTutorial sa samo jednim parametrom. Ovoj metodi samo prosljeđujemo TutorialName.
Ako se gornji kod ispravno unese i program se pokrene, prikazat će se sljedeći izlaz. Ako u slučaju da želite također dohvatiti ID vodiča zajedno s nazivom vodiča, trebali biste slijediti korak u nastavku
- Stvorite zasebnu metodu pod nazivom public int GetTutorialID
- U toj metodi napišite redak koda "vrati TutorialID." Ovo se može koristiti za vraćanje TutorialID-a pozivajućem programu.
Izlaz:
Iz izlaza možemo jasno vidjeti da su obje metode uspješno pozvane. Zbog toga su nizovi "First Tutorial" i "Second Tutorial" poslani na konzolu.
Rezime
- Nasljeđivanje je mjesto gdje podređena klasa nasljeđuje polja i metode nadređene klase. Klasa potomak također može definirati vlastite metode.
- Polimorfizam u C# je OOP koncept gdje jedno ime može imati mnogo oblika.