Differenza tra sovraccarico e override

Prima di immergerci profondamente nelle differenze tra sovraccarico e override, dobbiamo capire cosa sono realmente e gli scenari in cui sono particolarmente utilizzati? I principianti in Java spesso si confondono tra i due ma sono totalmente diversi l'uno dall'altro e utilizzati nei loro scenari specifici. Il sovraccarico del metodo è quando disponiamo di più metodi con lo stesso nome ma firme diverse. Le firme includono il numero di parametri del metodo, il tipo di dati dei parametri. Il tipo di metodo restituito non è incluso nella firma. Questo viene fatto per fornire la funzionalità di riutilizzo dello stesso nome di metodo e aumentare la leggibilità dei programmi. La sostituzione del metodo si verifica nel caso di ereditarietà in cui la classe derivata eredita le proprietà dalla classe base. Implica la definizione dello stesso metodo della classe base in una classe derivata con lo stesso parametro e tipo restituito al fine di definire qualsiasi specifica funzionalità / implementazione di quel metodo nella classe derivata.

Considera uno scenario in cui un programmatore deve trovare l'area di una figura geometrica. L'area di ciascuna figura varia l'una dall'altra. Ad esempio, per trovare l'area del quadrato è richiesto solo un singolo parametro "lato", per il rettangolo sono richiesti due parametri "lunghezza e larghezza" mentre per il cerchio è richiesto un raggio che può essere decimale. Per risolvere questo scopo, viene eseguito un sovraccarico del metodo in cui l'area del metodo ha parametri e tipi di dati diversi per un'area di figure diverse. Pensa alla situazione del sistema bancario, sebbene diversi metodi e procedure per tutti i dipendenti siano gli stessi, tranne che per alcuni tassi di interesse simili per i cittadini normali e per gli anziani è diverso. In questo caso, viene utilizzato l'override del metodo con diverse implementazioni dei tassi di interesse del metodo sia nella classe normale che in quella senior che ereditano la classe di base "tassi bancari".

Confronto testa a testa tra sovraccarico e override (infografica)

Di seguito è riportato il confronto tra i primi 7 tra sovraccarico e override :

Differenze chiave tra sovraccarico e override

Discutiamo alcune delle principali differenze chiave tra sovraccarico e override:

  1. Nel sovraccarico del metodo, i metodi possono avere identificatori / modificatori di accesso uguali o diversi nel nome del metodo, mentre nel metodo Sostituzione metodo del caso base (metodo ignorato) deve avere un identificatore di accesso limitato rispetto al metodo di una classe genitore. Ad esempio, se il metodo di una classe base è protetto, il metodo figlio privato non è consentito.
  2. Se confrontato in termini di prestazioni, il sovraccarico ha prestazioni migliori rispetto a Sostituzione perché il sovraccarico del metodo viene eseguito al momento della compilazione.
  3. Il tipo restituito di un metodo non fa mai parte del metodo Sovraccarico, quindi non importa se diversi metodi sovraccaricati hanno lo stesso o diverso tipo di ritorno, mentre in Metodo Sostituzione il tipo restituito di entrambi i metodi della classe genitore e di base deve essere esattamente lo stesso .
  4. Quando si parla di associazione, l'overloading ha un'associazione statica mentre l'override ha un'associazione dinamica.
  5. L'eccezione generata dal metodo non ha importanza nel metodo sovraccarico se un metodo genera un'eccezione che altri metodi sovraccaricati possono / non possono generare la stessa o diversa eccezione ma in caso di Sostituzione, il metodo Sostituzione (metodo nella classe derivata) non può generare un'eccezione di gerarchia superiore a il metodo sovrascritto (metodo nella classe base).
  6. Tutti gli specificatori come privato, finale e statico non possono essere utilizzati in Sostituzione metodo, mentre tutti gli specificatori di accesso sono consentiti nel sovraccarico del metodo.

Tabella di confronto tra sovraccarico e override

La tabella seguente riassume i confronti tra sovraccarico e override:

S.No. Sovraccarico Override
1Il sovraccarico del metodo viene eseguito per avere una definizione avanzata dei metodi in base a varie situazioni.La sostituzione del metodo viene eseguita al fine di fornire un'implementazione specifica dei metodi definiti nella classe padre.
2Il sovraccarico del metodo viene eseguito in una singola classe in cui una classe ha definizioni diverse di un metodo.La sostituzione del metodo viene eseguita tra due classi che hanno una relazione IS-A (ereditarietà) tra loro.
3Metodo Il sovraccarico viene eseguito in fase di compilazione e quindi è noto come polimorfismo in fase di compilazione.La sostituzione del metodo viene eseguita in fase di runtime e quindi è nota come polimorfismo di runtime.
4L'ordinamento dei parametri, il tipo di dati e il conteggio dei parametri devono essere diversi per il sovraccarico del metodo.L'ordine dei parametri, il tipo di dati e il conteggio devono essere gli stessi per l'override del metodo.
5Il tipo restituito di un metodo può essere uguale o diverso in caso di sovraccarico del metodo. Non importa affatto.Il tipo restituito di un metodo deve essere lo stesso sia nella classe padre che nella classe figlio in caso di Sostituzione metodo.
6I metodi statici possono essere sovraccaricati, ovvero possiamo avere diversi metodi statici sovraccaricati nella stessa classe.I metodi statici non possono mai essere ignorati, ovvero il metodo statico in una classe genitore e la classe base non ha alcuna relazione tra di loro.
7I metodi privati ​​e finali possono essere sovraccaricati in una classe, ovvero una classe può aver sovraccaricato più di 1 metodi privati ​​e finali.I metodi privati ​​e finali non possono mai essere ignorati in una classe figlio.

Esempio di sovraccarico del metodo:

class FIgures(
public int area(int side)
(
return side*side;
)
public int area(int length, int breadth) //method overloading
(
return length*breadth;
)
public static void main(String() args)
(
Figures f = new Figures ();
System.out.println(“Area of Square “+ f.area(10));
System.out.println(“Area of Rectangle “+ f.area(12, 10));
)
)

Produzione:

Area di Square 100
Area del rettangolo 120

Nell'esempio sopra, il metodo 'area ()' è sovraccarico e ha parametri diversi in entrambi i metodi sovraccarichi. Come l'area deve scoprire sia per il quadrato che per il rettangolo ma con parametri diversi.

Esempio di override del metodo:

class BankRates( // parent(base) class
void rates()
(
System.out.println(“Rates for normal citizen is 3.5%”);
)
)
class SeniorCItizen extends BankRates( //child class inheriting parent class
void rates() // method overriding
(
System.out.println(“Rates for senior citizens is 4.5%”);
)
)
class Bank(
public static void main(String() args)
(
SeniorCItizen sc = new BankRates(); sc.rates();
)
)

Produzione:

Le tariffe per gli anziani è del 4, 5%

Nell'esempio sopra, il metodo 'rate ()' viene sovrascritto nella classe derivata 'SeniorCitizen' perché vogliamo anche i tassi del metodo nella classe SeniorCitizen ma con un'implementazione diversa.

Conclusione

La spiegazione sopra mostra chiaramente la differenza tra sovraccarico e override e gli scenari specifici in cui questi due vengono utilizzati. Prima di programmare, è necessario comprendere questi concetti chiave di Java in quanto formano la base di molte cose e aiutano a comprendere facilmente concetti più avanzati.

Articoli consigliati

Questa è stata una guida alla differenza principale tra sovraccarico e override. Qui discutiamo anche le differenze chiave tra sovraccarico e override con infografica e tabella comparativa. Puoi anche dare un'occhiata ai seguenti articoli per saperne di più -

  1. Programmazione funzionale vs OOP
  2. Che cos'è l'override in JavaScript?
  3. Come funziona il sovraccarico in PHP?
  4. Panoramica del sovraccarico in C #
  5. Sostituzione in Java
  6. Sovraccarico di Python
  7. Sovraccarico e override in C #

Categoria: