C # Arv & Polymorfism med exempel

Innehållsförteckning:

Anonim

I den här handledningen lär du dig-

  • Arv
  • Polymorfism

Vad är arv i C #?

Arv är ett viktigt begrepp i C #. Arv är ett begrepp där du definierar föräldraklasser och barnklasser.

Barnklasserna ärver metoder och egenskaper hos moderklassen, men samtidigt kan de också ändra beteendet hos metoderna om det behövs. Barnklassen kan också definiera egna metoder om det behövs.

Du kommer att få en bättre förståelse om vi ser den här åtgärden.

Låt oss nu se hur vi kan införliva begreppet arv i vår kod.

Steg 1) Det första steget är att ändra koden för vår självstudiekurs. I det här steget lägger vi till koden nedan i filen Tutorial.cs.

Observera att vi nu måste lägga till åtkomstmodifieraren för 'skyddad' till både TutorialID och TutorialName-fältet.

Kom ihåg att vi hade nämnt den här åtkomstmodifieraren i handledningen om åtkomstmodifierare. Tja här kan du se syftet med att ha det här. Först när du har den här åtkomstmodifieraren (skyddad) kan underklassen använda fälten i den överordnade klassen.

Steg 2) Det andra steget är att lägga till vår nya barnklass. Namnet på den här klassen kommer att vara "Guru99Tutorial". I det här steget lägger vi till koden nedan i filen Tutorial.cs. Koden ska placeras efter definitionen av självstudiekursen.

Kodförklaring: -

  1. Det första steget är att skapa barnklassen Guru99Tutorial. Vi måste också nämna att den här klassen kommer att bli en barnklass i klassen Tutorial. Detta görs med nyckelordet ':'.
  2. Därefter definierar vi en metod som heter RenameTutorial. Den kommer att användas för att byta namn på fältet TutorialName. Denna metod accepterar en strängvariabel som innehåller det nya namnet på självstudien.
  3. Vi tilldelade sedan parametern pNewName till fältet TutorialName.

    Obs : - Även om vi inte har definierat fältet TutorialName i klassen "Guru99Tutorial" har vi fortfarande tillgång till detta fält. Detta beror på det faktum att "Guru99Tutorial" är en barnklass i Tutorial-klass. Och eftersom vi gjorde fälten i klassen Tutorial som skyddade kan de nås av den här klassen.

Steg 3) Det sista steget är att ändra vår huvudsakliga Program.cs-fil. I vår konsolapplikation ska vi göra ett objekt av klassen Guru99Tutorial. Med detta objekt ska vi kalla metoden RenameTutorial. Vi kommer sedan att visa fältet TutorialName med hjälp av GetTutorial-metoden.

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{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();}}}

Kodförklaring: -

  1. Det första steget är att skapa ett objekt för Guru99Tutorial-klassen. Detta görs via det "nya" nyckelordet. Observera att den här gången skapar vi inte ett objekt från klassen Tutorial.
  2. Vi använder RenameTutorial-metoden i Guru99Tutorial-klassen för att ändra fältet TutorialName. Vi skickar strängen ".Net by Guru99" till metoden RenameTutorial.
  3. Vi kallar sedan GetTutorial-metoden. Observera att även om den här metoden inte är definierad i Guru99Tutorial-klassen har vi fortfarande tillgång till den här metoden. Utgången från GetTutorial-metoden visas sedan på konsolen via Console.WriteLine-metoden.

Om ovanstående kod är korrekt angiven och programmet körs framgångsrikt visas följande utdata.

Produktion:

Från utdata kan vi tydligt se att fältet TutorialName döptes om till ".Net by Guru99". Detta möjliggjordes av RenameTutorial-metoden som kallades av barnklassen.

Vad är polymorfism i C #?

Polymorfism är ett OOP-koncept där ett namn kan ha många former.

Till exempel har du en smartphone för kommunikation. Det kommunikationsläge du väljer kan vara vad som helst. Det kan vara ett samtal, ett textmeddelande, ett bildmeddelande, e-post osv. Så målet är vanligt att det är kommunikation, men deras inställning är annorlunda. Detta kallas polymorfism.

Du kommer att få en bättre förståelse om vi ser den här åtgärden.

Låt oss nu se hur vi kan införliva begreppet polymorfism i vår kod.

Steg 1) Det första steget är att ändra koden för vår självstudiekurs. I det här steget lägger vi till koden nedan i filen Tutorial.cs.

Kodförklaring: -

1 & 2) Det första steget är detsamma som i våra tidigare exempel. Vi håller definitionen av SetTutorial-metoden som den är.

3) Denna metod ställer in TutorialID och TutorialName baserat på parametrarna pID och pName.

4) Det är här vi ändrar vår klass där vi lägger till en ny metod med samma namn som SetTutorial. Bara den här gången skickar vi bara en parameter som är pName. I den här metoden ställer vi bara in fältet TutorialName till pName.

Steg 2) Det sista steget är att ändra vår huvud Program.cs-fil. I vår konsolapplikation ska vi göra ett objekt av klassen 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();}}}

Kodförklaring: -

  1. I det första steget använder vi SetTutorial-metoden med två parametrar. Där vi skickar både TutorialID och TutorialName till den här metoden.
  2. I det andra steget kallar vi nu SetTutorial-metoden med bara en parameter. Vi skickar bara TutorialName till den här metoden.

Om koden ovan anges korrekt och programmet körs visas följande utdata. Om du också vill hämta handlednings-ID: t tillsammans med handledningsnamnet bör du följa steget nedan

  1. Skapa en separat metod som kallas public int GetTutorialID
  2. I den metoden skriver du kodraden "return TutorialID." Detta kan användas för att återställa TutorialID till det anropande programmet.

Produktion:

Från produktionen kan vi tydligt se att båda metoderna har anropats framgångsrikt. På grund av detta skickades strängarna "First Tutorial" och "Second Tutorial" till konsolen.

Sammanfattning

  • Arv är där en barnklass ärver fälten och metoderna för föräldraklassen. Barnklassen kan då också definiera sina egna metoder.
  • Polymorfism är ett OOP-koncept där ett namn kan ha många former.