Differenza tra sopravvivenza e sovraccarico

Anonim

Overriding vs Overloading

Il metodo Overriding e overloading metodo sono due concetti / tecniche / funzionalità trovati in alcuni linguaggi di programmazione. Entrambi i concetti consentono al programmatore di fornire implementazioni diverse per metodi con lo stesso nome. Il metodo di sostituzione consente al programmatore di fornire un'implementazione alternativa all'interno di una classe secondaria ad un metodo già definito all'interno della sua super classe. Il sovraccarico del metodo consente al programmatore di fornire implementazioni diverse a più metodi con lo stesso nome (all'interno della stessa classe).

Che cosa è Overriding?

Come accennato in precedenza, una classe può estendere una classe super o una classe padre, nei linguaggi di programmazione orientati agli oggetti. Una classe infantile può avere i propri metodi o, in opzione, avere le proprie implementazioni a metodi già definiti nella sua classe padre (o una delle sue classi genitori). Quindi, quando quest'ultimo accade, viene chiamato metodo che supera. In altre parole, se la classe figlio fornisce un'implementazione a un metodo con la stessa firma e tipo di ritorno come un metodo già definito in una delle sue classi parentali, si dice che il metodo sia sostituito (sostituito) con l'implementazione della classe figlia. Quindi, se esiste un metodo overridden in una classe, il sistema di runtime dovrà decidere quale metodo di implementazione viene utilizzato. Questo problema viene risolto guardando l'esatto tipo di oggetto utilizzato per richiamarlo. Se viene utilizzato un oggetto della classe padre per richiamare il metodo overridden, viene utilizzata l'implementazione nella classe padre. Allo stesso modo, se è un oggetto della classe figlia che viene utilizzato, viene utilizzata l'implementazione della classe figlia. I linguaggi di programmazione moderni quali Java, Eifell, C ++ e Python permettono il metodo di overriding.

Che cosa è sovraccarico?

Il sovraccarico del metodo è una funzionalità fornita da alcuni linguaggi di programmazione per creare più di un metodo con lo stesso nome, ma con diversi tipi di input e output. Nei linguaggi di programmazione moderni come Java, C #, C ++ e VB. NET, questa funzionalità è disponibile. È possibile sovraccaricare un metodo creando un altro metodo con lo stesso nome ma con una firma diversa di tipo o un tipo di ritorno diverso (o entrambi). Ad esempio, se si dispone di method1 (type1 t1) e method1 (type2 t2) all'interno della stessa classe, allora sono sovraccarichi. Quindi il sistema dovrà decidere quale deve essere eseguito quando viene chiamato. Questa differenziazione è fatta guardando al tipo di parametri passati al metodo. Se l'argomento è di tipo1, viene chiamata la prima implementazione, mentre se è di tipo2, viene chiamata la seconda implementazione.

Qual è la differenza tra l'override e il sovraccarico?

Anche se, il metodo di override e il sovraccarico del metodo vengono utilizzati per fornire un metodo con diverse implementazioni, esistono differenze chiave tra questi due concetti / tecniche. Innanzitutto, i soggetti di metodo che superano sempre rimangono in classi diverse, mentre i soggetti di sovraccarico di metodo rimangono nella stessa classe. Ciò significa che l'override è possibile solo nei linguaggi di programmazione orientati agli oggetti che consentono l'ereditarietà, mentre il sovraccarico può essere disponibile anche in un linguaggio non oggetto-orientato. In altre parole, sovrascrivi un metodo nella classe super, ma sovraccarichi un metodo all'interno della propria classe.

Un'altra differenza è che i metodi overridden hanno lo stesso nome di metodo, la firma del metodo e il tipo di restituzione, ma i metodi overload devono differire sia nella firma che nel tipo di ritorno (il nome deve essere lo stesso). Per distinguere tra due metodi sopracitati, l'esatto tipo di oggetto utilizzato per richiamare l'id usato, mentre per distinguere tra due metodi sovraccarichi vengono utilizzati i tipi di parametri. Un'altra differenza fondamentale è che il sovraccarico viene risolto al momento della compilazione, mentre l'overriding risolve in fase di runtime.