Ereditarietà e polimorfismo C# con esempi di programmi
⚡ Riepilogo intelligente
In C#, l'ereditarietà e il polimorfismo sono due principi fondamentali della programmazione orientata agli oggetti. L'ereditarietà permette a una classe figlia di riutilizzare i campi e i metodi di una classe padre, mentre il polimorfismo consente a un singolo nome di metodo di assumere diverse forme.

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.
Tieni presente che ora dobbiamo aggiungere il modificatore di accesso 'protetto' sia al campo TutorialID che a TutorialName.
Ricorda che avevamo menzionato questo modificatore di accesso nel Tutorial sui modificatori di accessoEcco, qui si può capire lo scopo di questa impostazione. Solo quando è presente il modificatore di accesso (protected), la classe figlia può utilizzare i campi della classe padre.
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 deve essere posizionato dopo la definizione della classe Tutorial.
Code Spiegazione:-
- Il primo passo è creare il Guru99Classe figlia Tutorial. Dobbiamo anche menzionare che questa classe sarà una classe figlia della classe Tutorial. Questo viene fatto tramite la parola chiave ':'.
- 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.
- Abbiamo quindi assegnato il parametro pNewName al campo TutorialName. Note:: – Anche se non abbiamo definito il campo TutorialName nel “Guruclasse” 99Tutorial”, siamo ancora in grado di accedere a questo campo. Questo perché “Guru99Tutorial” è una sottoclasse della classe Tutorial. E poiché abbiamo reso i campi della classe Tutorial protetti, questi possono essere accessibili da questa classe.
Passo 3) L'ultimo passaggio consiste nel modificare il nostro file principale Program.cs. Nella nostra applicazione console, creeremo un oggetto del GuruClasse 99Tutorial. Con questo oggetto, chiameremo il metodo RenameTutorial. Successivamente, visualizzeremo il campo TutorialName con l'aiuto del metodo 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(); } } }
Code Spiegazione:-
- Il primo passo è creare un oggetto per il Guru99Classe Tutorial. Questo viene fatto tramite la parola chiave 'new'. Si noti che questa volta non stiamo creando un oggetto della classe Tutorial.
- Utilizziamo il metodo RenameTutorial del Guru99Classe Tutorial per modificare il campo TutorialName. Passiamo la stringa “.Net by Guru99” al metodo RenameTutorial.
- Successivamente chiamiamo il metodo GetTutorial. Nota che anche se questo metodo non è definito nel GuruNella classe 99Tutorial, siamo ancora in grado di accedere a questo metodo. L'output del metodo GetTutorial viene quindi visualizzato nella 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:
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# Il polimorfismo è un concetto della programmazione orientata agli oggetti (OOP) in cui un nome può avere molteplici forme. Ad esempio, si può utilizzare uno smartphone per comunicare. La modalità di comunicazione scelta può essere qualsiasi: una chiamata, un messaggio di testo, un messaggio con immagini, un'e-mail, ecc. L'obiettivo è lo stesso, ovvero comunicare, ma l'approccio è diverso. Questo concetto è 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.
Code Spiegazione:-
1 e 2) Il primo passo è lo stesso dei nostri esempi precedenti. Stiamo tenendoping 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 consiste nel modificare il nostro file principale Program.cs. Nella nostra applicazione console, creeremo un oggetto del Guru99 Lezione di tutoraggio.
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 Spiegazione:-
- Nel primo passaggio utilizziamo il metodo SetTutorial con 2 parametri. Dove stiamo passando sia TutorialID che TutorialName a questo metodo.
- 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
- Crea un metodo separato chiamato public int GetTutorialID
- In questo metodo scrivi la riga di codice "return TutorialID". Questo può essere utilizzato per restituire il TutorialID al programma chiamante.
Produzione:
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”.







