Il differenza fondamentale tra override e overloading in C # è quello l'associazione della chiamata del metodo sottoposto a override alla sua definizione avviene in fase di esecuzione mentre l'associazione della chiamata di metodo sovraccaricata alla sua definizione avviene al momento della compilazione.
C # è un linguaggio di programmazione generico sviluppato da Microsoft. Il vantaggio principale di C # è che supporta la programmazione orientata agli oggetti (OOP). Un pilastro di OOP è il polimorfismo. Dà un oggetto per avere più comportamenti. Esistono due tipi di polimorfismo noti come sovrascrittura e sovraccarico. Questo articolo discute la differenza tra l'override del metodo e l'overloading in C #.
1. Panoramica e differenza chiave
2. Che cosa sta scavalcando in C #
3. Che cos'è il sovraccarico in C #
4. Somiglianze tra sovrascrittura e sovraccarico in C #
5. Confronto affiancato - Override vs Sovraccarico in C # in forma tabulare
6. Sommario
C'è un altro concetto importante in OOP è l'ereditarietà. È per utilizzare attributi e metodi della classe già esistente. Migliora la riusabilità del codice. La classe già esistente è la classe base e la nuova classe è nota come classe derivata. Nel sovrascrivere il polimorfismo, dovrebbero esserci una classe base e una classe derivata. L'associazione della chiamata del metodo sottoposto a override alla definizione avviene in fase di esecuzione. Un esempio è il seguente.
Figura 01: programma C # con Override
Secondo il programma precedente, la classe Shape è la classe base e contiene il metodo di visualizzazione. Class Rectangle and Triangle sono classi derivate. Queste classi derivate hanno anche lo stesso metodo di visualizzazione con le proprie implementazioni.
Innanzitutto viene creata la variabile di riferimento obj. Punta all'oggetto Shape. Quindi, verrà eseguito il metodo di visualizzazione della classe Shape. Quindi, la variabile di riferimento punta all'oggetto Rectangle. Quindi, verrà eseguito il metodo di visualizzazione della classe Rectangle. Infine, la variabile di riferimento punta all'oggetto Triangolo. Quindi, verrà eseguito il metodo di visualizzazione della classe Triangle. Il metodo di visualizzazione della classe base è sovrascritto dai metodi di visualizzazione delle classi derivate.
Il metodo da eseguire viene deciso in fase di esecuzione. La classe Shape è scritta con la parola chiave "virtuale". Le classi Rectangle e Triangle sono scritte con la parola chiave 'override'. Se queste parole chiave non vengono utilizzate, l'output stamperà il contenuto del metodo di visualizzazione della classe Shape per tutti.
In caso di sovraccarico, più metodi hanno lo stesso nome ma con parametri diversi. I parametri possono essere di diversi tipi. I metodi possono anche avere un numero diverso di parametri. L'overloading del metodo si verifica nella stessa classe. L'associazione dei metodi sovraccaricati alla definizione avviene al momento della compilazione. Fare riferimento al programma C # seguente.
Figura 02: programma C # con sovraccarico
Secondo il programma di cui sopra, la classe A ha due metodi con lo stesso nome chiamato sum. Hanno diversi tipi di parametri. Nel programma principale, viene creato un oggetto di A. La somma (2,3) invocherà il metodo sum con gli interi. La somma (5.1, 7.94) invocherà il metodo sum con valori double. Entrambi i metodi hanno lo stesso nome e lo stesso numero di parametri. Ma i tipi di parametri sono diversi. Il metodo richiesto è chiamato di conseguenza. Il sovraccarico può verificarsi anche se i nomi dei metodi e i tipi di parametro sono uguali ma il numero di parametri è diverso.
Override vs Sovraccarico in C # | |
L'esecuzione dell'override in C # consiste nel fornire un'implementazione specifica in un metodo di classe derivata per un metodo già esistente nella classe base. | Il sovraccarico in C # è di creare più metodi con lo stesso nome con diverse implementazioni. |
parametri | |
In C # Override, i metodi hanno lo stesso nome, gli stessi tipi di parametri e lo stesso numero di parametri. | In Overloading C #, i metodi hanno lo stesso nome ma un diverso numero di parametri o un diverso tipo di parametri. |
avvenimento | |
In C #, l'override si verifica all'interno della classe base e della classe derivata. | In C #, l'overloading si verifica all'interno della stessa classe. |
Tempo vincolante | |
L'associazione del richiamo del metodo sottoposto a override alla sua definizione avviene in fase di esecuzione. | L'associazione del richiamo del metodo sovraccaricato alla sua definizione avviene al momento della compilazione. |
Sinonimi | |
Override è chiamato come polimorfismo di runtime, polimorfismo dinamico o legatura tardiva. | Il sovraccarico è chiamato come polimorfismo del tempo di compilazione, polimorfismo statico o legatura anticipata. |
Sovraccarico e sovraccarico sono due tipi di polimorfismo. La differenza tra l'override e l'overloading in C # è che l'associazione del richiamo del metodo sottoposto a override alla sua definizione avviene in fase di esecuzione mentre l'associazione della chiamata del metodo overload alla sua definizione avviene in fase di compilazione.
1.Kumar, Mukesh. C # Corner. Disponibile qui
2.tutorialspoint.com. "Polimorfismo C #". TutorialsPoint. Disponibile qui
3.tutorialspoint.com. "Tipi di dati C #." TutorialsPoint , Disponibile qui