In questo tutorial imparerai-
- Eredità
- Polimorfismo
Che cos'è l'ereditarietà in C #?
L'ereditarietà è un concetto importante in C #. L'ereditarietà è un concetto in cui si definiscono classi padre e classi figlio.
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.
Avrai una migliore comprensione se vediamo questa azione.
Vediamo ora come possiamo incorporare il concetto di ereditarietà nel nostro codice.
Passaggio 1) Il primo passaggio consiste nel modificare il codice per la nostra classe Tutorial. In questo passaggio, aggiungiamo il codice seguente al file Tutorial.cs.
Nota che ora dobbiamo aggiungere il modificatore di accesso di "protected" sia al campo TutorialID che 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 potrà utilizzare i campi della classe genitore.
Passaggio 2) Il secondo passaggio consiste nell'aggiungere la nostra nuova classe figlio. 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.
Spiegazione del codice: -
- 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 ":".
- 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.
Nota : - 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 figlio della classe Tutorial. E poiché abbiamo reso protetti i campi della classe Tutorial, è possibile accedervi da questa classe.
Passaggio 3) L'ultimo passaggio consiste nel modificare il nostro file Program.cs principale. Nella nostra applicazione console, creeremo un oggetto della classe Guru99Tutorial. Con questo oggetto, chiameremo il metodo RenameTutorial. Quindi 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{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: -
- Il primo passo è creare un oggetto per la classe Guru99Tutorial. Questo viene fatto tramite la parola chiave "nuovo". Nota che questa volta non stiamo creando un oggetto della classe Tutorial.
- Usiamo il metodo RenameTutorial della classe Guru99Tutorial per modificare il campo TutorialName. Passiamo la stringa ".Net by Guru99" al metodo RenameTutorial.
- Chiamiamo quindi il metodo GetTutorial. Nota 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 nella console tramite il metodo Console.WriteLine.
Se il codice di cui sopra viene inserito 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 #?
Il polimorfismo è un concetto di OOP in cui un nome può avere molte forme.
Ad esempio, hai uno smartphone per la comunicazione. La modalità di comunicazione che scegli potrebbe essere qualsiasi cosa. Può essere una chiamata, un messaggio di testo, un messaggio con disegno, una mail, ecc. Quindi l'obiettivo è comune che è la comunicazione, ma il loro approccio è diverso. Questo si chiama polimorfismo.
Avrai una migliore comprensione se vediamo questa azione.
Vediamo ora come possiamo incorporare il concetto di polimorfismo nel nostro codice.
Passaggio 1) Il primo passaggio consiste nel modificare il codice per la nostra classe Tutorial. In questo passaggio, aggiungiamo il codice seguente al file Tutorial.cs.
Spiegazione del codice: -
1 e 2) Il primo passaggio è lo stesso dei nostri esempi precedenti. Stiamo mantenendo la definizione del metodo SetTutorial così com'è.
3) Questo metodo imposta TutorialID e 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 solo passando un parametro che è il pName. In questo metodo, stiamo solo impostando il campo di TutorialName su pName.
Passaggio 2) L'ultimo passaggio consiste nel modificare il nostro file Program.cs principale. Nella nostra applicazione console, creeremo un oggetto della 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();}}}
Spiegazione del codice: -
- Nella prima fase utilizziamo il metodo SetTutorial con 2 parametri. Dove stiamo passando sia TutorialID che TutorialName a questo metodo.
- Nella seconda fase, chiamiamo ora il metodo SetTutorial con un solo parametro. Stiamo solo passando il TutorialName a questo metodo.
Se il codice sopra è inserito correttamente e il programma viene eseguito, verrà visualizzato il seguente output. Se nel caso in cui volessi recuperare anche 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". 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, le stringhe "First Tutorial" e "Second Tutorial" sono state inviate alla console.
Sommario
- L'ereditarietà è il punto in cui una classe figlia eredita i campi e i metodi della classe genitore. La classe figlia può quindi anche definire i propri metodi.
- Il polimorfismo è un concetto di OOP in cui un nome può avere molte forme.