C#:n perinnöllisyys ja polymorfismi ohjelmaesimerkeillä

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.

Esimerkki C#:n perinnöstä

Huomaa, että meidän on nyt lisättävä "suojattu" käyttöoikeusmuunnin sekä TutorialID- että TutorialName-kenttään.

Muista, että olimme maininneet tämän pääsyn muokkaajan Access Modifier -opetusohjelmassa. No tässä näette tämän tarkoituksen. Vain kun sinulla on tämä käyttöoikeusmuunnin (suojattu), alaluokka voi käyttää yläluokan kenttiä.

Vaihe 2) Toinen vaihe on uuden lapsiluokkamme lisääminen. Tämän luokan nimi on "Guru99Tutorial". Tässä vaiheessa lisäämme alla olevan koodin Tutorial.cs-tiedostoon. Koodi tulee sijoittaa Tutorial-luokan määritelmän jälkeen.

Esimerkki C#:n perinnöstä

Koodin selitys: -

  1. Ensimmäinen askel on luoda Guru99Tutorial-lapsiluokka. Meidän on myös mainittava, että tämä luokka tulee olemaan Tutorial-luokan lapsiluokka. Tämä tehdään avainsanalla ":".
  2. 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.
  3. Määritimme sitten TutorialName-kenttään parametrin pNewName.
    Huomautuksia: – Vaikka emme ole määrittäneet TutorialName-kenttää "Guru99Tutorial"-luokassa, voimme silti käyttää tätä kenttää. Tämä johtuu siitä, että "Guru99Tutorial" 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 Program.cs-päätiedostoa. Konsolisovelluksessamme aiomme tehdä Guru99Tutorial-luokan objektin. Tämän objektin avulla kutsumme RenameTutorial-menetelmää. Aiomme sitten näyttää TutorialName-kentän GetTutorial-menetelmän avulla.

Esimerkki C#:n perinnöstä

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(); 
  }
 }
}

Koodin selitys: -

  1. Ensimmäinen askel on luoda objekti Guru99Tutorial-luokkaan. Tämä tehdään "uusi"-avainsanalla. Huomaa, että tällä kertaa emme luo Tutorial-luokan objektia.
  2. Käytämme Guru99Tutorial-luokan RenameTutorial-metodia muuttaaksemme TutorialName-kenttää. Välitämme merkkijonon ".Net by Guru99" RenameTutorial -menetelmälle.
  3. Kutsumme sitten GetTutorial-menetelmää. Huomaa, että vaikka tätä menetelmää ei ole määritetty Guru99Tutorial-luokassa, voimme silti käyttää tätä menetelmää. GetTutorial-menetelmän tulos näytetään sitten konsolissa Console.WriteLine-menetelmän kautta.

Jos yllä oleva koodi on syötetty oikein ja ohjelma suoritetaan onnistuneesti, seuraava tulos näytetään.

lähtö:

Esimerkki C#:n perinnöstä

Tulosteesta voimme selvästi nähdä, että TutorialName-kenttä nimettiin uudelleen nimellä ".Net by Guru99". Tämän teki mahdolliseksi lapsiluokan kutsuma RenameTutorial-metodi.

Mikä on polymorfismi C#:ssa?

polymorfismi C#:ssa on OOPs-konsepti, jossa yhdellä nimellä voi olla useita muotoja. Sinulla on esimerkiksi älypuhelin viestintää varten. Valitsemasi viestintätapa voi olla mikä tahansa. Se voi olla puhelu, tekstiviesti, kuvaviesti, posti jne. Tavoite on siis yhteinen, eli viestintä, mutta heidän lähestymistapansa 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.

Esimerkki C#:n polymorfismista

Koodin selitys: -

1 & 2) Ensimmäinen vaihe on sama kuin aikaisemmissa esimerkeissämme. Säilytämme SetTutorial-menetelmän määritelmän sellaisena kuin se on.

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 Program.cs-päätiedostoa. Konsolisovelluksessamme aiomme tehdä Guru99Tutorial-luokan objektin.

Esimerkki C#:n polymorfismista

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(); 
  }
 }
}

Koodin selitys: -

  1. Ensimmäisessä vaiheessa käytämme SetTutorial-menetelmää kahdella parametrilla. Jos välitämme sekä TutorialID- että TutorialName-tunnisteen tälle menetelmälle.
  2. 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

  1. Luo erillinen menetelmä nimeltä public int GetTutorialID
  2. Kirjoita tässä menetelmässä koodirivi "return TutorialID". Tätä voidaan käyttää palauttamaan TutorialID kutsuvaan ohjelmaan.

lähtö:

Esimerkki C#:n polymorfismista

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.

Yhteenveto

  • Periytys tarkoittaa sitä, että aliluokka perii pääluokan kentät ja menetelmät. Lapsiluokka voi silloin myös määritellä omat menetelmänsä.
  • Polymorfismi sisään C# on OOPs-konsepti, jossa yhdellä nimellä voi olla useita muotoja.