Ereditarietà e polimorfismo C# con esempi di programmi

Cos'è l'ereditarietà in C#?

Eredità è un concetto importante di C#. L'ereditarietà è un concetto in cui si definiscono classi genitore e classi figlie. Le classi figlie ereditano metodi e proprietà della classe genitore, ma allo stesso tempo possono anche modificare il comportamento dei metodi, se necessario. La classe figlia può anche definire metodi propri, se necessario.

Comprendiamo meglio l'ereditarietà C# tramite un esempio di programma:

Esempio di eredità C#

Vediamo ora come possiamo incorporare il concetto di ereditarietà nel nostro codice.

Passo 1) Il primo passo è modificare il codice per la nostra classe Tutorial. In questo passaggio, aggiungiamo il codice seguente al file Tutorial.cs.

Esempio di eredità C#

Tieni presente che ora dobbiamo aggiungere il modificatore di accesso 'protetto' sia al campo TutorialID che a TutorialName.

Ricorda che abbiamo menzionato questo modificatore di accesso nel tutorial sul modificatore di accesso. Bene, qui puoi vedere lo scopo di avere questo. Solo quando si dispone di questo modificatore di accesso (protetto), la classe figlia sarà in grado di utilizzare i campi della classe genitore.

Passo 2) Il secondo passo è aggiungere la nostra nuova classe figlia. Il nome di questa classe sarà "Guru99Tutorial". In questo passaggio, aggiungiamo il codice seguente al file Tutorial.cs. Il codice dovrebbe essere inserito dopo la definizione della classe Tutorial.

Esempio di eredità C#

Spiegazione del codice: -

  1. Il primo passo è creare la classe figlia Guru99Tutorial. Dobbiamo anche menzionare che questa classe sarà una classe figlia della classe Tutorial. Questo viene fatto dalla parola chiave ':'.
  2. Successivamente, stiamo definendo un metodo chiamato RenameTutorial. Verrà utilizzato per rinominare il campo TutorialName. Questo metodo accetta una variabile stringa che contiene il nuovo nome del Tutorial.
  3. Abbiamo quindi assegnato il parametro pNewName al campo TutorialName.
    Note:: – Anche se non abbiamo definito il campo TutorialName nella classe “Guru99Tutorial”, siamo ancora in grado di accedere a questo campo. Ciò è dovuto al fatto che "Guru99Tutorial" è una classe figlia della classe Tutorial. E poiché abbiamo reso protetti i campi della classe Tutorial, è possibile accedervi da questa classe.

Passo 3) L'ultimo passaggio è modificare il nostro file Program.cs principale. Nella nostra applicazione console, creeremo un oggetto della classe Guru99Tutorial. Con questo oggetto chiameremo il metodo RenameTutorial. Successivamente visualizzeremo il campo TutorialName con l'aiuto del metodo GetTutorial.

Esempio di eredità 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(); 
  }
 }
}

Spiegazione del codice: -

  1. Il primo passo è creare un oggetto per la classe Guru99Tutorial. Questo viene fatto tramite la parola chiave "nuovo". Tieni presente che questa volta non stiamo creando un oggetto della classe Tutorial.
  2. Usiamo il metodo RenameTutorial della classe Guru99Tutorial per modificare il campo TutorialName. Passiamo la stringa “.Net by Guru99” al metodo RenameTutorial.
  3. Chiamiamo quindi il metodo GetTutorial. Tieni presente che anche se questo metodo non è definito nella classe Guru99Tutorial, siamo comunque in grado di accedere a questo metodo. L'output del metodo GetTutorial viene quindi visualizzato sulla console tramite il metodo Console.WriteLine.

Se il codice sopra riportato viene immesso correttamente e il programma viene eseguito correttamente, verrà visualizzato il seguente output.

Produzione:

Esempio di eredità C#

Dall'output, possiamo vedere chiaramente che il campo TutorialName è stato rinominato in ".Net by Guru99". Ciò è stato reso possibile dal metodo RenameTutorial chiamato dalla classe figlia.

Cos'è il polimorfismo in C#?

Polimorfismo in C# è un concetto OOPs in cui un nome può avere molte forme. Ad esempio, hai uno smartphone per comunicare. La modalità di comunicazione che scegli potrebbe essere qualsiasi cosa. Può essere una chiamata, un messaggio di testo, un messaggio con immagine, una posta, ecc. Quindi, l'obiettivo è comune, ovvero la comunicazione, ma il loro approccio è diverso. Questo è chiamato Polimorfismo.

Otterrai una migliore comprensione del polimorfismo C# dal seguente esempio di programma:

Esempio di polimorfismo C#

Vediamo ora come possiamo incorporare il concetto di Polimorfismo nel nostro codice.

Passo 1) Il primo passo è modificare il codice per la nostra classe Tutorial. In questo passaggio, aggiungiamo il codice seguente al file Tutorial.cs.

Esempio di polimorfismo C#

Spiegazione del codice: -

1 e 2) Il primo passaggio è lo stesso dei nostri esempi precedenti. Manteniamo la definizione del metodo SetTutorial così com'è.

3) Questo metodo imposta il TutorialID e il TutorialName in base ai parametri pID e pName.

4) Qui è dove apportiamo una modifica alla nostra classe in cui aggiungiamo un nuovo metodo con lo stesso nome di SetTutorial. Solo che questa volta stiamo passando solo un parametro che è pName. In questo metodo, stiamo semplicemente impostando il campo TutorialName su pName.

Passo 2) L'ultimo passaggio è modificare il nostro file Program.cs principale. Nella nostra applicazione console, creeremo un oggetto della classe Guru99Tutorial.

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

Spiegazione del codice: -

  1. Nel primo passaggio utilizziamo il metodo SetTutorial con 2 parametri. Dove stiamo passando sia TutorialID che TutorialName a questo metodo.
  2. Nel secondo passaggio chiameremo ora il metodo SetTutorial con un solo parametro. Stiamo semplicemente passando TutorialName a questo metodo.

Se il codice sopra è stato inserito correttamente e il programma è stato eseguito, verrà visualizzato il seguente output. Se nel caso volessi anche recuperare l'ID del tutorial insieme al nome del tutorial, dovresti seguire il passaggio seguente

  1. Crea un metodo separato chiamato public int GetTutorialID
  2. In questo metodo scrivi la riga di codice "return TutorialID". Questo può essere utilizzato per restituire il TutorialID al programma chiamante.

Produzione:

Esempio di polimorfismo C#

Dall'output, possiamo vedere chiaramente che entrambi i metodi sono stati chiamati con successo. Per questo motivo sono state inviate alla console le stringhe “Primo Tutorial” e “Secondo Tutorial”.

Sommario

  • L'ereditarietà è il luogo in cui una classe figlia eredita i campi e i metodi della classe genitore. La classe figlia può quindi anche definire i propri metodi.
  • Polimorfismo dentro C# è un concetto OOP in cui un nome può avere molte forme.