C#:n perinnöllisyys ja polymorfismi ohjelmaesimerkeillä
⚡ Älykäs yhteenveto
Periytyminen ja polymorfismi ovat C#:n kaksi keskeistä olio-ohjelmoinnin periaatetta. Periytyminen antaa lapsiluokan käyttää uudelleen pääluokan kenttiä ja metodeja, kun taas polymorfismi antaa yhden metodin nimen olla monessa eri muodossa.
Mitä on perinnöllisyys C#:ssa?
Perintö on tärkeä C#:n käsite. Perinnöllisyys on käsite, jossa määrittelet vanhempi- ja alaluokat. Lapiluokat perivät emoluokan metodit ja ominaisuudet, mutta samalla ne voivat tarvittaessa myös muokata menetelmien käyttäytymistä. Lapsiluokka voi myös tarvittaessa määritellä omia menetelmiään.
Ymmärrämme paremmin C#-perinnön ohjelmaesimerkin avulla:
Esimerkki C#:n perinnöstä
Katsotaan nyt, kuinka voimme sisällyttää perinnön käsitteen koodiimme.
Vaihe 1) Ensimmäinen askel on vaihtaa Tutorial-luokkamme koodi. Tässä vaiheessa lisäämme alla olevan koodin Tutorial.cs-tiedostoon.
Huomaa, että meidän on nyt lisättävä "suojattu" käyttöoikeusmuunnin sekä TutorialID- että TutorialName-kenttään.
Muista, että mainitsimme tämän käyttöoikeusmuokkaimen kohdassa Käyttöoikeusmuokkaimen opetusohjelmaNo tässä näkyy tämän tarkoitus. Vain kun sinulla on tämä käyttöoikeusmuokkaaja (suojattu), lapsiluokka voi käyttää pääluokan kenttiä.
Vaihe 2) Toinen vaihe on uuden lapsiluokan lisääminen. Tämän luokan nimi on "Guru99Tutorial”. Tässä vaiheessa lisätään alla oleva koodi Tutorial.cs-tiedostoon. Koodi tulisi sijoittaa Tutorial-luokan määritelmän jälkeen.
Code Selitys:-
- Ensimmäinen askel on luoda Guru99Tutorial-luokan lapsiluokka. On myös mainittava, että tämä luokka tulee olemaan Tutorial-luokan lapsiluokka. Tämä tehdään avainsanalla ':'.
- Seuraavaksi määrittelemme menetelmän nimeltä RenameTutorial. Sitä käytetään TutorialName-kentän nimeämiseen uudelleen. Tämä menetelmä hyväksyy merkkijonomuuttujan, joka sisältää opetusohjelman uuden nimen.
- Määritimme sitten TutorialName-kenttään parametrin pNewName. Huomautuksia: – Vaikka emme ole määritelleet TutorialName-kenttää kohdassa ”Guru99Tutorial”-luokan avulla voimme edelleen käyttää tätä kenttää. Tämä johtuu siitä, että ”Guru”99Tutorial” on Tutorial-luokan lapsiluokka. Ja koska teimme Tutorial-luokan kentät suojatuiksi, tämä luokka voi käyttää niitä.
Vaihe 3) Viimeinen vaihe on muokata päätiedostoamme Program.cs. Konsolisovelluksessamme teemme siitä objektin Guru99Tutorial-luokka. Tällä objektilla kutsumme RenameTutorial-metodia. Tämän jälkeen näytämme TutorialName-kentän GetTutorial-metodin avulla.
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 Selitys:-
- Ensimmäinen vaihe on luoda objekti, jota varten Guru99Tutorial-luokka. Tämä tehdään avainsanalla 'new'. Huomaa, että tällä kertaa emme luo Tutorial-luokan oliota.
- Käytämme RenameTutorial-metodia Guru99Tutorial-luokka TutorialName-kentän muuttamiseen. Välitämme merkkijonon “.Net by Guru99” RenameTutorial-metodiin.
- Kutsumme sitten GetTutorial-metodia. Huomaa, että vaikka tätä metodia ei ole määritelty Guru99Tutorial-luokan avulla voimme edelleen käyttää tätä metodia. GetTutorial-metodin tuloste näytetään sitten konsolille Console.WriteLine-metodin kautta.
Jos yllä oleva koodi on syötetty oikein ja ohjelma suoritetaan onnistuneesti, seuraava tulos näytetään.
lähtö:
Tulosteesta näemme selvästi, että TutorialName-kentän nimi muutettiin muotoon ".Net by Guru99”. Tämän mahdollisti lapsiluokan kutsuma RenameTutorial-metodi.
Mikä on polymorfismi C#:ssa?
polymorfismi in C# on OOP-käsite, jossa yhdellä nimellä voi olla useita muotoja. Esimerkiksi sinulla on älypuhelin viestintää varten. Valitsemasi viestintätapa voi olla mikä tahansa. Se voi olla puhelu, tekstiviesti, kuvaviesti, sähköposti jne. Tavoite on siis yhteinen, eli viestintä, mutta lähestymistapa on erilainen. Tätä kutsutaan polymorfismiksi.
Saat paremman käsityksen C#-polymorfismista alla olevan ohjelmaesimerkin avulla:
Esimerkki C#:n polymorfismista
Katsotaan nyt, kuinka voimme sisällyttää polymorfismin käsitteen koodiimme.
Vaihe 1) Ensimmäinen askel on vaihtaa Tutorial-luokkamme koodi. Tässä vaiheessa lisäämme alla olevan koodin Tutorial.cs-tiedostoon.
Code Selitys:-
1 ja 2) Ensimmäinen vaihe on sama kuin aiemmissa esimerkeissämme. Pidämmeping SetTutorial-metodin määritelmä sellaisenaan.
3) Tämä menetelmä asettaa TutorialID:n ja TutorialName:n parametrien pID ja pName perusteella.
4) Tässä teemme muutoksen luokkaamme, jossa lisäämme uuden menetelmän samalla nimellä SetTutorial. Vain tällä kertaa välitämme vain yhden parametrin, joka on pName. Tässä menetelmässä asetamme vain TutorialName-kentän arvoksi pName.
Vaihe 2) Viimeinen vaihe on muokata päätiedostoamme Program.cs. Konsolisovelluksessamme teemme siitä objektin Guru99Tutorial-luokka.
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 Selitys:-
- Ensimmäisessä vaiheessa käytämme SetTutorial-menetelmää kahdella parametrilla. Jos välitämme sekä TutorialID- että TutorialName-tunnisteen tälle menetelmälle.
- Toisessa vaiheessa kutsumme nyt SetTutorial-menetelmää vain yhdellä parametrilla. Välitämme vain TutorialNamen tälle menetelmälle.
Jos yllä oleva koodi on syötetty oikein ja ohjelma ajetaan, näyttöön tulee seuraava tulos. Jos haluat hakea myös opetusohjelman tunnuksen yhdessä opetusohjelman nimen kanssa, noudata alla olevaa vaihetta
- Luo erillinen menetelmä nimeltä public int GetTutorialID
- Kirjoita tässä menetelmässä koodirivi "return TutorialID". Tätä voidaan käyttää palauttamaan TutorialID kutsuvaan ohjelmaan.
lähtö:
Tulosteesta voimme selvästi nähdä, että molemmat menetelmät kutsuttiin onnistuneesti. Tämän vuoksi merkkijonot "First Tutorial" ja "Second Tutorial" lähetettiin konsoliin.








