C# arv og polymorfisme med programeksempler

Hva er arv i C#?

Arv er et viktig konsept for C#. Arv er et begrep der du definerer foreldreklasser og barneklasser. Barneklassene arver metoder og egenskaper til den overordnede klassen, men samtidig kan de også endre oppførselen til metodene om nødvendig. Barneklassen kan også definere egne metoder om nødvendig.

La oss få en bedre forståelse av C#-arv ved et programeksempel:

C# arveeksempel

La oss nå se hvordan vi kan inkorporere begrepet arv i koden vår.

Trinn 1) Det første trinnet er å endre koden for opplæringsklassen vår. I dette trinnet legger vi til koden nedenfor i Tutorial.cs-filen.

C# arveeksempel

Legg merke til at vi nå må legge til tilgangsmodifikatoren "beskyttet" i både TutorialID og TutorialName-feltet.

Husk at vi hadde nevnt denne tilgangsmodifikatoren i Access Modifier-opplæringen. Vel her kan du se hensikten med å ha dette. Bare når du har denne tilgangsmodifikatoren (beskyttet), kan den underordnede klassen bruke feltene til den overordnede klassen.

Trinn 2) Det andre trinnet er å legge til vår nye barneklasse. Navnet på denne klassen vil være "Guru99Tutorial". I dette trinnet legger vi til koden nedenfor i Tutorial.cs-filen. Koden skal plasseres etter definisjonen av opplæringsklassen.

C# arveeksempel

Kodeforklaring:-

  1. Det første trinnet er å lage Guru99Tutorial-barneklassen. Vi må også nevne at denne klassen kommer til å være en barneklasse i opplæringsklassen. Dette gjøres med nøkkelordet ':'.
  2. Deretter definerer vi en metode som heter RenameTutorial. Det vil bli brukt til å gi nytt navn til TutorialName-feltet. Denne metoden godtar en strengvariabel som inneholder det nye navnet på opplæringen.
  3. Vi tildelte deretter parameteren pNewName til TutorialName-feltet.
    Merknader: – Selv om vi ikke har definert TutorialName-feltet i "Guru99Tutorial"-klassen, har vi fortsatt tilgang til dette feltet. Dette er på grunn av det faktum at "Guru99Tutorial" er en barneklasse i opplæringsklassen. Og fordi vi har gjort feltene i opplæringsklassen beskyttet, kan denne klassen få tilgang til dem.

Trinn 3) Det siste trinnet er å endre hovedfilen Program.cs. I konsollapplikasjonen vår skal vi lage et objekt av Guru99Tutorial-klassen. Med dette objektet skal vi kalle RenameTutorial-metoden. Vi skal da vise TutorialName-feltet ved hjelp av GetTutorial-metoden.

C# arveeksempel

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

Kodeforklaring:-

  1. Det første trinnet er å lage et objekt for Guru99Tutorial-klassen. Dette gjøres via det nye søkeordet. Legg merke til at denne gangen lager vi ikke et objekt av opplæringsklassen.
  2. Vi bruker RenameTutorial-metoden til Guru99Tutorial-klassen for å endre TutorialName-feltet. Vi sender strengen ".Net by Guru99" til RenameTutorial-metoden.
  3. Vi kaller deretter GetTutorial-metoden. Merk at selv om denne metoden ikke er definert i Guru99Tutorial-klassen, har vi fortsatt tilgang til denne metoden. Utdataene fra GetTutorial-metoden vises deretter til konsollen via Console.WriteLine-metoden.

Hvis koden ovenfor er angitt riktig og programmet kjøres vellykket, vil følgende utdata vises.

Utgang:

C# arveeksempel

Fra utdataene kan vi tydelig se at TutorialName-feltet ble omdøpt til ".Net av Guru99". Dette ble muliggjort av RenameTutorial-metoden kalt av barneklassen.

Hva er polymorfisme i C#?

polymorfisme i C# er et OOPs-konsept der ett navn kan ha mange former. For eksempel har du en smarttelefon for kommunikasjon. Kommunikasjonsmodusen du velger kan være hva som helst. Det kan være en samtale, en tekstmelding, en bildemelding, post osv. Så målet er vanlig, det vil si kommunikasjon, men deres tilnærming er annerledes. Dette kalles polymorfisme.

Du vil få en bedre forståelse av C#-polymorfisme ved å følge programeksemplet nedenfor:

Eksempel på C# polymorfisme

La oss nå se hvordan vi kan inkorporere konseptet polymorfisme i koden vår.

Trinn 1) Det første trinnet er å endre koden for opplæringsklassen vår. I dette trinnet legger vi til koden nedenfor i Tutorial.cs-filen.

Eksempel på C# polymorfisme

Kodeforklaring:-

1 & 2) Det første trinnet er det samme som i våre tidligere eksempler. Vi beholder definisjonen av SetTutorial-metoden som den er.

3) Denne metoden setter TutorialID og TutorialName basert på parameterne pID og pName.

4) Det er her vi gjør en endring i klassen vår der vi legger til en ny metode med samme navn som SetTutorial. Bare denne gangen sender vi bare én parameter som er pName. I denne metoden setter vi bare feltet til TutorialName til pName.

Trinn 2) Det siste trinnet er å endre hovedfilen Program.cs. I konsollapplikasjonen vår skal vi lage et objekt av Guru99Tutorial-klassen.

Eksempel på C# polymorfisme

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

Kodeforklaring:-

  1. I det første trinnet bruker vi SetTutorial-metoden med 2 parametere. Der vi sender både TutorialID og TutorialName til denne metoden.
  2. I det andre trinnet kaller vi nå SetTutorial-metoden med bare én parameter. Vi sender bare TutorialName til denne metoden.

Hvis koden ovenfor angis riktig og programmet kjøres, vil følgende utdata vises. Hvis du også ønsker å hente opplærings-IDen sammen med opplæringsnavnet, bør du følge trinnet nedenfor

  1. Lag en egen metode kalt public int GetTutorialID
  2. I den metoden skriver du kodelinjen "return TutorialID." Dette kan brukes til å returnere opplærings-IDen til det anropende programmet.

Utgang:

Eksempel på C# polymorfisme

Fra utgangen kan vi tydelig se at begge metodene ble kalt vellykket. På grunn av dette ble strengene "First Tutorial" og "Second Tutorial" sendt til konsollen.

Sammendrag

  • Arv er der en barneklasse arver feltene og metodene til den overordnede klassen. Barneklassen kan da også definere egne metoder.
  • Polymorfisme i C# er et OOPs konsept hvor ett navn kan ha mange former.