C # Herència i polimorfisme amb exemples

En aquest tutorial, aprendreu

Què és l’herència en C #?

L'herència és un concepte important a C #. L’herència és un concepte en el qual definiu classes parentals i classes infantils.

Les classes fill hereten mètodes i propietats de la classe pare, però, al mateix temps, també poden modificar el comportament dels mètodes si és necessari. La classe infantil també pot definir mètodes propis si és necessari.

Obtindreu una millor comprensió si veiem aquesta acció.

Vegem ara com podem incorporar el concepte d’herència al nostre codi.

Pas 1) El primer pas és canviar el codi de la nostra classe Tutorial. En aquest pas, afegim el codi següent al fitxer Tutorial.cs.

Tingueu en compte que ara hem d'afegir el modificador d'accés de 'protegit' al camp TutorialID i TutorialName.

Recordeu que havíem mencionat aquest modificador d’accés al tutorial sobre modificador d’accés. Doncs aquí podeu veure el propòsit de tenir-ho. Només quan tingueu aquest modificador d’accés (protegit), la classe fill podrà utilitzar els camps de la classe pare.

Pas 2) El segon pas és afegir la nostra nova classe infantil. El nom d'aquesta classe serà 'Guru99Tutorial'. En aquest pas, afegim el codi següent al fitxer Tutorial.cs. El codi s'hauria de col·locar després de la definició de la classe Tutorial.

Explicació del codi: -

  1. El primer pas és crear la classe infantil Guru99Tutorial. També hem d’esmentar que aquesta classe serà una classe infantil de la classe Tutorial. Això es fa amb la paraula clau ':'.
  2. A continuació, estem definint un mètode anomenat RenameTutorial. S'utilitzarà per canviar el nom del camp TutorialName. Aquest mètode accepta una variable de cadena que conté el nou nom del tutorial.
  3. A continuació, hem assignat el paràmetre pNewName al camp TutorialName.

    Nota : - Tot i que no hem definit el camp TutorialName a la classe 'Guru99Tutorial', encara podem accedir a aquest camp. Això es deu al fet que 'Guru99Tutorial' és una classe infantil de classe Tutorial. I com que hem creat els camps de la classe Tutorial com a protegits, aquesta classe els pot accedir.

Pas 3) L’últim pas és modificar el nostre fitxer principal Program.cs. A la nostra aplicació de consola, farem un objecte de la classe Guru99Tutorial. Amb aquest objecte, anomenarem el mètode RenameTutorial. A continuació, mostrarem el camp TutorialName amb l'ajut del mètode GetTutorial.

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

Explicació del codi: -

  1. El primer pas és crear un objecte per a la classe Guru99Tutorial. Això es fa mitjançant la paraula clau 'nova'. Tingueu en compte que aquesta vegada no estem creant cap objecte de la classe Tutorial.
  2. Utilitzem el mètode RenameTutorial de la classe Guru99Tutorial per canviar el camp TutorialName. Passem la cadena '.Net per Guru99' al mètode RenameTutorial.
  3. A continuació, anomenem el mètode GetTutorial. Tingueu en compte que, tot i que aquest mètode no està definit a la classe Guru99Tutorial, encara podem accedir a aquest mètode. La sortida del mètode GetTutorial es mostra a la consola mitjançant el mètode Console.WriteLine.

Si el codi anterior s'introdueix correctament i el programa s'executa correctament, es mostrarà la següent sortida.

Sortida:

A la sortida, podem veure clarament que el camp TutorialName es va canviar el nom a '.Net per Guru99'. Això va ser possible gràcies al mètode RenameTutorial anomenat per la classe infantil.

Què és el polimorfisme en C #?

El polimorfisme és un concepte OOPs on un nom pot tenir moltes formes.

Per exemple, teniu un telèfon intel·ligent per a la comunicació. El mode de comunicació que trieu pot ser qualsevol. Pot ser una trucada, un missatge de text, un missatge il·lustrat, un correu electrònic, etc. Per tant, l'objectiu és comú que sigui la comunicació, però el seu enfocament és diferent. Això s’anomena polimorfisme.

Obtindreu una millor comprensió si veiem aquesta acció.

Vegem ara com podem incorporar el concepte de polimorfisme al nostre codi.

Pas 1) El primer pas és canviar el codi de la nostra classe Tutorial. En aquest pas, afegim el codi següent al fitxer Tutorial.cs.

Explicació del codi: -

1 i 2) El primer pas és el mateix que en els nostres exemples anteriors. Mantenim la definició del mètode SetTutorial tal com és.

3) Aquest mètode estableix el TutorialID i el TutorialName en funció dels paràmetres pID i pName.

4) Aquí és on fem un canvi a la nostra classe en què afegim un nou mètode amb el mateix nom de SetTutorial. Només aquesta vegada només passem un paràmetre que és pName. En aquest mètode, només estem establint el camp TutorialName a pName.

Pas 2) L’últim pas és modificar el nostre fitxer principal Program.cs. A la nostra aplicació de consola, farem un objecte de la classe 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(); } } }

Explicació del codi: -

  1. Al primer pas, fem servir el mètode SetTutorial amb 2 paràmetres. On passem el TutorialID i el TutorialName a aquest mètode.
  2. En el segon pas, ara cridem el mètode SetTutorial amb només un paràmetre. Estem passant el TutorialName a aquest mètode.

Si s'introdueix correctament el codi anterior i s'executa el programa, es mostrarà la següent sortida. Si voleu obtenir també l'identificador del tutorial juntament amb el nom del tutorial, heu de seguir el pas següent

  1. Creeu un mètode separat anomenat public int GetTutorialID
  2. En aquest mètode escriviu la línia de codi 'return TutorialID'. Es pot utilitzar per retornar el TutorialID al programa de trucades.

Sortida:

A partir de la sortida, podem veure clarament que tots dos mètodes es van anomenar amb èxit. Per això, les cadenes 'Primer tutorial' i 'Segon tutorial' s'han enviat a la consola.

Resum

  • L’herència és on una classe fill hereta els camps i mètodes de la classe pare. La classe infantil també pot definir els seus propis mètodes.
  • El polimorfisme és un concepte OOPs on un nom pot tenir moltes formes.