Differenza tra sovraccarico e sovrascrittura | Sovraccarico vs Override

Pubblicato: 2021-06-15

Sommario

introduzione

La programmazione orientata agli oggetti gioca un ruolo importante nei settori dello sviluppo software. Diversi concetti sono associati a questo tipo di programmazione come classe, oggetto, polimorfismo, ereditarietà, astrazione dei dati, programmazione generica e gestione eccezionale.

Gli sviluppatori trovano sempre piuttosto interessante il concetto di polimorfismo, che ha sottoconcetti come il sovraccarico del metodo, l'override del metodo, ecc. Tuttavia, per comprendere meglio il concetto di polimorfismo, è necessario comprendere la differenza tra sovraccarico e override .

Differenza tra sovraccarico del metodo e sovrascrittura del metodo

Esistono molte differenze tra l'override del metodo e l'override del metodo . L'elenco delle differenze tra l' override del metodo e l'override in Java è riportato di seguito:

Sovraccarico del metodo Sovrascrittura del metodo
1 Il metodo viene utilizzato per aumentare la leggibilità del programma. Il metodo viene utilizzato per fornire l'implementazione del metodo fornito dalla superclasse.
2 Viene eseguito all'interno di una classe Si verifica in due classi che hanno una relazione IS-A (ereditarietà). La base e una classe figlio sono necessarie per l'override.
3 I metodi o le funzioni devono avere lo stesso nome e firme diverse. I metodi o le funzioni devono avere lo stesso nome e le stesse firme.
4 I parametri utilizzati in questo metodo dovrebbero essere diversi. Gli stessi parametri dovrebbero essere utilizzati in caso di override del metodo.
5 È un esempio di polimorfismo in fase di compilazione. L'associazione della chiamata del metodo di overload alla sua definizione avviene in fase di compilazione. È un esempio di polimorfismo di runtime. L'associazione della chiamata del metodo sottoposto a override alla sua definizione avviene in fase di esecuzione.
6 Solo modificando il tipo restituito, non è possibile eseguire l'overloading del metodo. Il tipo di restituzione può essere diverso o uguale. Ma i parametri dovrebbero essere diversi. Il tipo restituito nell'override del metodo potrebbe essere lo stesso o covariante.
7 L'overloading del metodo potrebbe essere applicato ai metodi statici. Ciò significa che una classe può avere più di un metodo statico con lo stesso nome. L'override del metodo non può essere applicato ai metodi statici.
8 L'associazione statica viene utilizzata per l'overloading del metodo. L'associazione dinamica viene utilizzata per l'override del metodo.
9 Le migliori prestazioni sono date dal sovraccarico del metodo. Prestazioni inferiori rispetto al sovraccarico del metodo. Il motivo è che l'associazione dei metodi sovrascritti viene eseguita in fase di esecuzione.
10 I metodi privati ​​e finali possono essere sovraccaricati. Una classe può avere più di un metodo privato/finale con lo stesso nome. I metodi privati ​​e finali non possono essere ignorati. Una classe figlia non può sovrascrivere i metodi privati/finali della propria classe base.
11 L'ereditarietà può essere richiesta o meno in caso di sovraccarico del metodo. L'ereditarietà è sempre richiesta in caso di override del metodo.
12 Viene utilizzato per aggiungere altro al comportamento dei metodi. Viene utilizzato per modificare il comportamento dei metodi esistenti.
13 Non è necessaria la presenza di più di una classe nell'overloading del metodo. C'è sempre la necessità di almeno due classi nell'override del metodo.
14 Se il sovraccarico si interrompe, si verificherà l'errore in fase di compilazione ed è facile da risolvere. Se l'override delle interruzioni, può causare seri problemi nel nostro programma perché l'effetto sarà visibile in fase di esecuzione.
15 L'overloading del metodo deve avere una firma diversa. L'override del metodo deve avere la stessa firma.
16 I modificatori di accesso nel metodo di overloading possono essere qualsiasi o diversi. Il modificatore di accesso del metodo della sottoclasse deve essere uguale o superiore al modificatore di accesso del metodo della superclasse nel metodo di sostituzione.
17 Le eccezioni generate possono essere qualsiasi cosa nel concetto di sovraccarico del metodo. Nell'override del metodo, le eccezioni non controllate generate possono essere qualsiasi cosa. Per le eccezioni verificate, il metodo di override non deve generare eccezioni nuove o più ampie di quelle dichiarate dal metodo sottoposto a override.
18 Il compilatore si occupa sempre della risoluzione del metodo in base al tipo di riferimento. La JVM si occupa della risoluzione del metodo in base all'oggetto runtime.

Impara i corsi di software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Cosa succede dopo?

Se sei interessato a saperne di più sullo sviluppo di software full-stack, dai un'occhiata al programma Executive PG di upGrad & IIIT-B in Full-Stack Software Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, oltre 9 progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Che cos'è il polimorfismo di runtime?

Il polimorfismo di runtime è un tipo di polimorfismo che coinvolge la tipizzazione dinamica. Ciò significa che gli oggetti possono essere manipolati come se fossero un unico tipo. Questo è simile al polimorfismo statico in cui gli oggetti vengono manipolati come se avessero un unico tipo, indipendentemente dal tipo sottostante. È uno dei cinque principali principi di progettazione del software. Viene utilizzato con la programmazione orientata agli oggetti. Significa che una variabile può fare riferimento a oggetti diversi a seconda delle condizioni di runtime. Ad esempio, una variabile può essere utilizzata per fare riferimento a un oggetto Dog quando la variabile viene dichiarata, ma durante l'esecuzione del programma, la variabile può fare riferimento a un oggetto Cat. È una conversione automatica del tipo. Ad esempio, se hai una variabile intera i e le assegni un valore stringa, diventerà una variabile stringa.

In che modo l'override è diverso dal sovraccarico?

Possiamo sovrascrivere il metodo sovraccarico?

Un metodo in overload è uguale a uno normale (in termini di numero e tipo di parametri), ma con la differenza che il metodo di overload è scritto in modo tale da poter accettare parametri di tipo diverso da quello regolare. È possibile eseguire l'override di un metodo sovraccaricato nello stesso modo in cui si esegue l'override di uno normale.