C#-arv och polymorfism med programexempel
Vad är arv i C#?
Arv är ett viktigt begrepp i C#. Arv är ett begrepp där man definierar föräldraklasser och barnklasser. De underordnade klasserna ärver metoder och egenskaper från den överordnade klassen, men samtidigt kan de även modifiera metodernas beteende om det behövs. Barnklassen kan också definiera egna metoder om det behövs.
Låt oss få en bättre förståelse av C#-arv genom ett programexempel:
C# Arvsexempel
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 handledningsklass. 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 "skyddad" i både TutorialID och TutorialName-fältet.
Kom ihåg att vi hade nämnt denna åtkomstmodifierare i handledningen för åtkomstmodifierare. Här kan du se syftet med att ha detta. Endast när du har denna åtkomstmodifierare (skyddad) kan den underordnade klassen använda fälten för den överordnade klassen.
Steg 2) Det andra steget är att lägga till vår nya barnklass. Namnet på denna klass kommer att vara "Guru99Tutorial". I det här steget lägger vi till koden nedan i filen Tutorial.cs. Koden ska placeras efter klassdefinitionen för Tutorial.
Kodförklaring:-
- Det första steget är att skapa Guru99Tutorial-barnklassen. Vi måste också nämna att den här klassen kommer att vara en barnklass i handledningsklassen. Detta görs med nyckelordet ':'.
- Därefter definierar vi en metod som heter RenameTutorial. Det 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å handledningen.
- Vi tilldelade sedan parametern pNewName till fältet TutorialName.
Anmärkningar: – Även om vi inte har definierat fältet TutorialName i klassen "Guru99Tutorial", kan vi fortfarande komma åt det här fältet. Detta beror på det faktum att "Guru99Tutorial" är en barnklass i handledningsklassen. 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 kommer vi att göra ett objekt av klassen Guru99Tutorial. Med detta objekt kommer vi att anropa RenameTutorial-metoden. Vi kommer sedan att visa fältet TutorialName med hjälp av metoden GetTutorial.
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(); } } }
Kodförklaring:-
- Det första steget är att skapa ett objekt för klassen Guru99Tutorial. Detta görs via nyckelordet "nya". Observera att vi den här gången inte skapar ett objekt i klassen Tutorial.
- Vi använder metoden RenameTutorial i klassen Guru99Tutorial för att ändra fältet TutorialName. Vi skickar strängen ".Net by Guru99" till RenameTutorial-metoden.
- Vi kallar då GetTutorial-metoden. Observera att även om denna metod inte är definierad i Guru99Tutorial-klassen, kan vi fortfarande komma åt den här metoden. Utdata från metoden GetTutorial visas sedan för konsolen via metoden Console.WriteLine.
Om ovanstående kod matas in korrekt och programmet körs framgångsrikt, kommer följande utdata att visas.
Produktion:
Från utgången kan vi tydligt se att fältet TutorialName bytte namn till ".Net av Guru99". Detta möjliggjordes av metoden RenameTutorial som anropades av barnklassen.
Vad är polymorfism i C#?
polymorfism i C# är ett OOPs-koncept där ett namn kan ha många former. Till exempel har du en smartphone för kommunikation. Kommunikationsläget du väljer kan vara vad som helst. Det kan vara ett samtal, ett textmeddelande, ett bildmeddelande, mail etc. Så målet är vanligt, det vill säga kommunikation, men deras tillvägagångssätt är annorlunda. Detta kallas polymorfism.
Du kommer att få en bättre förståelse av C#-polymorfism genom följande programexempel:
Exempel på C#-polymorfism
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 handledningsklass. 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 behå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 gör en förändring i 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 för TutorialName till pName.
Steg 2) Det sista steget är att ändra vår huvudsakliga Program.cs-fil. I vår konsolapplikation kommer vi att 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:-
- I det första steget använder vi SetTutorial-metoden med 2 parametrar. Där vi skickar både TutorialID och TutorialName till denna metod.
- I det andra steget anropar vi nu SetTutorial-metoden med bara en parameter. Vi skickar bara TutorialName till denna metod.
Om ovanstående kod anges korrekt och programmet körs kommer följande utdata att visas. Om du också vill hämta handlednings-ID tillsammans med handledningsnamnet, bör du följa steget nedan
- Skapa en separat metod som heter public int GetTutorialID
- I den metoden skriver du kodraden "return TutorialID." Detta kan användas för att returnera TutorialID till det anropande programmet.
Produktion:
Från resultatet kan vi tydligt se att båda metoderna anropades framgångsrikt. På grund av detta skickades strängarna "First Tutorial" och "Second Tutorial" till konsolen.
Sammanfattning
- Arv är där en underordnad klass ärver den överordnade klassens fält och metoder. Barnklassen kan då också definiera sina egna metoder.
- Polymorfism i C# är ett OOPs-koncept där ett namn kan ha många former.