C#-arv og polymorfi med programeksempler

Hvad er arv i C#?

Arv er et vigtigt begreb i C#. Arv er et begreb, hvor du definerer forældreklasser og børneklasser. De underordnede klasser arver metoder og egenskaber fra den overordnede klasse, men på samme tid kan de også ændre metodernes opførsel, hvis det kræves. Barneklassen kan også definere egne metoder, hvis det kræves.

Lad os få en bedre forståelse af C#-arv ved et programeksempel:

C#-arvseksempel

Lad os nu se, hvordan vi kan inkorporere begrebet arv i vores kode.

Trin 1) Det første trin er at ændre koden til vores Tutorial-klasse. I dette trin tilføjer vi nedenstående kode til filen Tutorial.cs.

C#-arvseksempel

Bemærk, at vi nu skal tilføje adgangsmodifikatoren 'beskyttet' til både feltet TutorialID og TutorialName.

Husk, at vi havde nævnt denne adgangsmodifikator i Access Modifier tutorial. Nå, her kan du se formålet med at have dette. Kun når du har denne adgangsmodifikator (beskyttet), kan den underordnede klasse bruge felterne i den overordnede klasse.

Trin 2) Det andet trin er at tilføje vores nye børneklasse. Navnet på denne klasse vil være "Guru99Tutorial". I dette trin tilføjer vi nedenstående kode til filen Tutorial.cs. Koden skal placeres efter Tutorial-klassedefinitionen.

C#-arvseksempel

Kodeforklaring:-

  1. Det første trin er at oprette børneklassen Guru99Tutorial. Vi skal også nævne, at denne klasse bliver en børneklasse i Tutorial-klassen. Dette gøres med nøgleordet ':'.
  2. Dernæst definerer vi en metode kaldet RenameTutorial. Det vil blive brugt til at omdøbe feltet TutorialName. Denne metode accepterer en strengvariabel, som indeholder det nye navn på selvstudiet.
  3. Vi tildelte derefter parameteren pNewName til feltet TutorialName.
    Bemærk: – Selvom vi ikke har defineret feltet TutorialName i klassen "Guru99Tutorial", er vi stadig i stand til at få adgang til dette felt. Dette er på grund af det faktum, at "Guru99Tutorial" er en børneklasse i Tutorial-klassen. Og fordi vi har gjort felterne i Tutorial-klassen som beskyttede, kan de tilgås af denne klasse.

Trin 3) Det sidste trin er at ændre vores hovedfil Program.cs. I vores konsolapplikation skal vi lave et objekt af Guru99Tutorial-klassen. Med dette objekt vil vi kalde RenameTutorial-metoden. Vi vil derefter vise feltet TutorialName ved hjælp af GetTutorial-metoden.

C#-arvseksempel

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 trin er at oprette et objekt til Guru99Tutorial-klassen. Dette gøres via det 'nye' søgeord. Bemærk, at denne gang opretter vi ikke et objekt af klassen Tutorial.
  2. Vi bruger metoden RenameTutorial fra Guru99Tutorial-klassen til at ændre feltet TutorialName. Vi sender strengen ".Net by Guru99" til RenameTutorial-metoden.
  3. Vi kalder derefter GetTutorial-metoden. Bemærk, at selvom denne metode ikke er defineret i Guru99Tutorial-klassen, er vi stadig i stand til at få adgang til denne metode. Outputtet fra GetTutorial-metoden vises derefter til konsollen via Console.WriteLine-metoden.

Hvis ovenstående kode er indtastet korrekt, og programmet udføres korrekt, vil følgende output blive vist.

Output:

C#-arvseksempel

Fra outputtet kan vi tydeligt se, at feltet TutorialName blev omdøbt til ".Net af Guru99". Dette blev muliggjort af RenameTutorial-metoden, der blev kaldt af børneklassen.

Hvad er polymorfi i C#?

polymorfi i C# er et OOPs koncept, hvor ét navn kan have mange former. For eksempel har du en smartphone til kommunikation. Den kommunikationstilstand, du vælger, kan være hvad som helst. Det kan være et opkald, en sms, en billedbesked, mail osv. Så målet er fælles, det vil sige kommunikation, men deres tilgang er anderledes. Dette kaldes polymorfisme.

Du vil få en bedre forståelse af C#-polymorfi ved nedenstående programeksempel:

Eksempel på C# polymorfi

Lad os nu se, hvordan vi kan inkorporere begrebet polymorfisme i vores kode.

Trin 1) Det første trin er at ændre koden til vores Tutorial-klasse. I dette trin tilføjer vi nedenstående kode til filen Tutorial.cs.

Eksempel på C# polymorfi

Kodeforklaring:-

1 & 2) Det første trin er det samme som i vores tidligere eksempler. Vi beholder definitionen af ​​SetTutorial-metoden, som den er.

3) Denne metode indstiller TutorialID og TutorialName baseret på parametrene pID og pName.

4) Det er her, vi foretager en ændring af vores klasse, hvor vi tilføjer en ny metode med samme navn som SetTutorial. Kun denne gang sender vi kun én parameter, som er pName. I denne metode sætter vi bare feltet for TutorialName til pName.

Trin 2) Det sidste trin er at ændre vores hovedfil Program.cs. I vores konsolapplikation skal vi lave et objekt af Guru99Tutorial-klassen.

Eksempel på C# polymorfi

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 trin bruger vi SetTutorial-metoden med 2 parametre. Hvor vi sender både TutorialID og TutorialName til denne metode.
  2. I det andet trin kalder vi nu SetTutorial-metoden med kun én parameter. Vi videregiver blot TutorialName til denne metode.

Hvis ovenstående kode er indtastet korrekt, og programmet køres, vil følgende output blive vist. Hvis du også ønsker at hente selvstudie-id'et sammen med selvstudienavnet, skal du følge nedenstående trin

  1. Opret en separat metode kaldet public int GetTutorialID
  2. I den metode skal du skrive kodelinjen "return TutorialID." Dette kan bruges til at returnere TutorialID'et til det kaldende program.

Output:

Eksempel på C# polymorfi

Fra outputtet kan vi tydeligt se, at begge metoder blev kaldt med succes. På grund af dette blev strengene "First Tutorial" og "Second Tutorial" sendt til konsollen.

Resumé

  • Arv er det sted, hvor en underordnet klasse arver felterne og metoderne fra den overordnede klasse. Barneklassen kan så også definere sine egne metoder.
  • Polymorfi i C# er et OOPs koncept, hvor ét navn kan have mange former.