Moștenirea C# și polimorfismul cu exemple de programe

⚡ Rezumat inteligent

Moștenirea și polimorfismul în C# sunt două principii fundamentale orientate pe obiecte. Moștenirea permite unei clase copil să reutilizeze câmpurile și metodele unei clase părinte, în timp ce polimorfismul permite unui nume de metodă să ia mai multe forme.

  • 🧬 Moştenire: O clasă fiu moștenește câmpurile și metodele clasei părinte și poate adăuga propriile câmpuri și metode.
  • 🔒 Membri protejați: Marcarea câmpurilor părinte ca fiind protejate permite unei clase fiu derivate să le reutilizeze direct.
  • 🧩 Polimorfism: Un nume de metodă ia mai multe forme, așadar un singur apel se comportă diferit în funcție de context.
  • 🔀 Supraîncărcarea metodei: Mai multe metode au același nume, dar diferă în ceea ce privește parametrii, rezolvați la momentul compilării.
  • 🧱 Code reutilizare: Ambele principii elimină codul duplicat și mențin consecvența claselor aferente.
  • 🤖 Asistență AI: GitHub Copilot scheldează clasele de bază și cele derivate; ML.NET reutilizează ierarhiile de clase ca intrare a modelului.

Moștenire și polimorfism C#

Ce este moștenirea în C#?

Moştenire este un concept important de C#. Moștenirea este un concept în care definiți clasele părinte și clasele copil. Clasele copil moștenesc metode și proprietăți ale clasei părinte, dar, în același timp, pot modifica și comportamentul metodelor dacă este necesar. Clasa copil poate defini și metode proprii, dacă este necesar.

Să înțelegem mai bine moștenirea C# printr-un exemplu de program:

Exemplu de moștenire C#

Să vedem acum cum putem încorpora conceptul de moștenire în codul nostru.

Pas 1) Primul pas este schimbarea codului pentru clasa noastră Tutorial. În acest pas, adăugăm codul de mai jos în fișierul Tutorial.cs.

Exemplu de moștenire C#

Rețineți că acum trebuie să adăugăm modificatorul de acces „protejat” atât în ​​câmpul TutorialID, cât și în TutorialName.

Rețineți că am menționat acest modificator de acces în Tutorial Modificator de accesEi bine, aici puteți vedea scopul acestei utilizări. Numai atunci când aveți acest modificator de acces (protejat), clasa fiu va putea utiliza câmpurile clasei părinte.

Pas 2) Al doilea pas este să adăugăm noua noastră clasă copil. Numele acestei clase va fi „Guru99Tutorial”. În acest pas, adăugăm codul de mai jos în fișierul Tutorial.cs. Codul trebuie plasat după definiția clasei Tutorial.

Exemplu de moștenire C#

Code Explicaţie:-

  1. Primul pas este crearea GuruClasa fiu 99Tutorial. De asemenea, trebuie să menționăm că această clasă va fi o clasă fiu a clasei Tutorial. Acest lucru se face cu ajutorul cuvântului cheie ':'.
  2. În continuare, definim o metodă numită RenameTutorial. Va fi folosit pentru a redenumi câmpul TutorialName. Această metodă acceptă o variabilă șir care conține noul nume al Tutorialului.
  3. Apoi am atribuit parametrul pNewName câmpului TutorialName. notițeChiar dacă nu am definit câmpul TutorialName în „Guruclasa 99Tutorial”, putem accesa în continuare acest câmp. Acest lucru se datorează faptului că „Guru„99Tutorial” este o clasă fiică a clasei Tutorial. Și pentru că am făcut câmpurile clasei Tutorial protejate, acestea pot fi accesate de această clasă.

Pas 3) Ultimul pas este modificarea fișierului nostru principal Program.cs. În aplicația noastră de consolă, vom crea un obiect din GuruClasa 99Tutorial. Cu acest obiect, vom apela metoda RenameTutorial. Apoi vom afișa câmpul TutorialName cu ajutorul metodei GetTutorial.

Exemplu de moștenire C#

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

Code Explicaţie:-

  1. Primul pas este crearea unui obiect pentru GuruClasa 99Tutorial. Acest lucru se face prin intermediul cuvântului cheie „new”. Rețineți că de data aceasta nu creăm un obiect al clasei Tutorial.
  2. Folosim metoda RenameTutorial a GuruClasa 99Tutorial pentru a modifica câmpul TutorialName. Transmitem șirul „.Net by Guru99” către metoda RenameTutorial.
  3. Apoi apelăm metoda GetTutorial. Rețineți că, deși această metodă nu este definită în GuruÎn clasa 99Tutorial, putem accesa în continuare această metodă. Rezultatul metodei GetTutorial este apoi afișat în consolă prin intermediul metodei Console.WriteLine.

Dacă codul de mai sus este introdus corect și programul este executat cu succes, va fi afișată următoarea ieșire.

ieșire:

Exemplu de moștenire C#

Din rezultat, putem vedea clar că câmpul TutorialName a fost redenumit în „.Net de către Guru99”. Acest lucru a fost posibil datorită metodei RenameTutorial apelate de clasa fiu.

Ce este polimorfismul în C#?

polimorfismul in C# este un concept de POO în care un nume poate avea mai multe forme. De exemplu, aveți un smartphone pentru comunicare. Modul de comunicare pe care îl alegeți poate fi orice. Poate fi un apel, un mesaj text, un mesaj ilustrat, un e-mail etc. Deci, scopul este comun, adică comunicarea, dar abordarea lor este diferită. Aceasta se numește polimorfism.

Veți obține o mai bună înțelegere a polimorfismului C# prin exemplul de program de mai jos:

Exemplu de polimorfism C#

Să vedem acum cum putem încorpora conceptul de polimorfism în codul nostru.

Pas 1) Primul pas este schimbarea codului pentru clasa noastră Tutorial. În acest pas, adăugăm codul de mai jos în fișierul Tutorial.cs.

Exemplu de polimorfism C#

Code Explicaţie:-

1 și 2) Primul pas este același ca în exemplele noastre anterioare. Suntem ținuțiping definiția metodei SetTutorial așa cum este ea.

3) Această metodă setează TutorialID și TutorialName pe baza parametrilor pID și pName.

4) Aici facem o schimbare în clasa noastră în care adăugăm o nouă metodă cu același nume de SetTutorial. Numai că de data aceasta trecem doar un parametru, care este pName. În această metodă, doar setăm câmpul TutorialName la pName.

Pas 2) Ultimul pas este modificarea fișierului nostru principal Program.cs. În aplicația noastră de consolă, vom crea un obiect din Guru99Tutorial clasă.

Exemplu de polimorfism C#

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

Code Explicaţie:-

  1. În primul pas, folosim metoda SetTutorial cu 2 parametri. Unde trecem atât TutorialID cât și TutorialName acestei metode.
  2. În al doilea pas, apelăm acum metoda SetTutorial cu un singur parametru. Doar trecem TutorialName acestei metode.

Dacă codul de mai sus este introdus corect și programul este rulat, va fi afișată următoarea ieșire. Dacă în cazul în care doriți să obțineți și ID-ul tutorialului împreună cu numele tutorialului, ar trebui să urmați pasul de mai jos

  1. Creați o metodă separată numită public int GetTutorialID
  2. În acea metodă scrieți linia de cod „return TutorialID”. Acesta poate fi folosit pentru a returna TutorialID programului apelant.

ieșire:

Exemplu de polimorfism C#

Din rezultat, putem vedea clar că ambele metode au fost apelate cu succes. Din acest motiv, șirurile „Primul Tutorial” și „Al doilea Tutorial” au fost trimise la consolă.

Întrebări frecvente

C# acceptă moștenirea pe niveluri multiple, pe niveluri individuale și ierarhice prin intermediul claselor. Moștenirea multiplă se realizează doar prin interfețe.

Nu. Clasa AC# moștenește doar de la o singură clasă de bază. Moștenirea multiplă utilizează în schimb mai multe interfețe.

Supraîncărcarea folosește un nume cu parametri diferiți la momentul compilării. Suprascrierea redefinește o metodă de bază virtuală la momentul execuției.

Cuvântul cheie virtual face ca o metodă de bază să fie suprascriibilă; cuvântul cheie override o redefinește într-o clasă derivată.

Cuvântul cheie base permite unei clase derivate să apeleze constructorul părinte sau să acceseze membrii de bază ascunși sau suprascriși.

Marchează clasa sigilată. O clasă sigilată nu poate fi o clasă de bază, prevenind moștenirea ulterioară și îmbunătățind performanța.

Da. GitHub Copilot scheldează clasele de bază și cele fiice și adaugă metode virtuale și de suprascriere dintr-un comentariu sau dintr-un nume de clasă.

ML.NET definește clase de date și predicție care moștenesc membri partajați, iar conducta sa reutilizează un tip de bază comun de transformator.

Rezumați această postare cu: