Introduzione al sovraccarico e override in Java

Vediamo prima cosa suggerisce il nome a prima vista. "Sovraccarico" significa: sovraccaricare la funzionalità originale di qualcuno, giusto? Considerando che "Sostituzione" significa: fornire nuove funzionalità oltre alla funzionalità originale di chiunque. In questo articolo, esamineremo in dettaglio il sovraccarico e l'override in Java. Sì, anche in Java, questi sono implementati allo stesso modo a livello di codice. Diamo un'occhiata a quello uno per uno.

Sovraccarico in Java

Quando una classe java ha più metodi con lo stesso nome ma con argomenti diversi, la chiamiamo Metodo di sovraccarico. Mantenendo lo stesso nome, stiamo solo aumentando la leggibilità del codice del programma. Ad esempio, supponiamo di dover eseguire alcune operazioni di aggiunta su alcuni numeri. Diciamo che il nome del nostro metodo è "addition ()". Qui, l'aggiunta può essere fatta tra due numeri, tre numeri o più. Quindi, a seconda di quanti numeri comporteranno l'operazione di aggiunta, possiamo cambiare gli argomenti (o parametri) della funzione. Ma, invece di questo, se si scrivessero metodi diversi per il diverso numero di argomenti, sarà difficile riconoscerlo poiché il nome sarebbe diverso. Quindi, sovraccaricando, stiamo ottenendo una migliore leggibilità del nostro codice. Quindi ora la domanda è: come potremo ottenere un sovraccarico?

Diamo un'occhiata a quelli per uno con codici di esempio.

Metodo n. 1: modificando il numero di parametri

Quindi qui eseguiremo operazioni di aggiunta su alcuni numeri. Per questo, creiamo una classe chiamata "AdditionOperation". All'interno di quella classe, disponiamo di due metodi denominati "addition ()". In uno di questi metodi, eseguiremo un'aggiunta di due numeri. Nell'altro eseguiremo l'aggiunta di tre numeri. Questo lo raggiungeremo semplicemente cambiando il numero di parametri in quei metodi, ma manterremo lo stesso nome. In questo modo, stiamo sovraccaricando il metodo "addition ()" qui.

Codice:

public class AdditionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static int addition(int num1, int num2, int num3)(return num1+num2+num3;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35, 36, 37)); //method overloading, we are calling same methods but for different number of arguments.
)
)

Produzione:

Metodo n. 2: modificando il tipo di dati

Quindi qui eseguiremo operazioni di addizione su tipi diversi, ad esempio tra tipo intero e tra doppio tipo. Per questo, creiamo una classe chiamata "AdditionOperation". All'interno di quella classe, disponiamo di due metodi denominati "addition ()". In uno di questi metodi, eseguiremo l'aggiunta di due numeri interi. Nell'altro, eseguiremo l'aggiunta di due doppi. Questo lo raggiungeremo semplicemente cambiando il tipo di parametri in quei metodi, ma manterremo lo stesso nome. In questo modo, stiamo sovraccaricando il metodo "addition ()" qui.

Codice:

public class additionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static double addition(double num1, num2)(return num1+num2;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35.5, 36.6)); //method overloading, we are calling same methods but for different type of arguments.
)
)

Produzione:

Punti da notare per il sovraccarico

  • Il sovraccarico in java è fondamentalmente un "polimero in fase di compilazione". Sovraccarico in orfismo C # ". Il polimorfismo in fase di compilazione in java è anche chiamato "invio del metodo statico" o "associazione anticipata". Quindi cosa intendo per gergo?
  • Il polimorfismo, come suggerisce il nome, è fondamentalmente una capacità di assumere molte forme (poli: molti, morph: forma). Quindi, qui il collegamento o l'associazione della funzione sovraccaricata e l'oggetto viene eseguito in fase di compilazione. Quindi si chiama polimorfismo in fase di compilazione.
  • Fondamentalmente qui, l'associazione della funzione all'oggetto viene eseguita prima del tempo di esecuzione (cioè durante il tempo di compilazione), quindi viene anche chiamata "associazione anticipata".
  • L'invio statico è un tipo di polimorfismo o invio di metodo che indica come java selezionerà quale funzionalità del metodo verrà utilizzata in fase di compilazione. (Voglio dire, se eseguirà l'aggiunta di due numeri o tre numeri nel nostro esempio di codifica). Quindi il nome è anche noto come metodo statico Dispatch.

Sostituzione in Java

  • Quando una sottoclasse java o una classe figlio ha un metodo con lo stesso nome e contiene gli stessi parametri o argomenti e un tipo di ritorno simile a un metodo presente nella sua superclasse o classe genitore, allora possiamo chiamare il metodo della classe figlio come un metodo ignorato del metodo della sua classe genitore.
  • Ad esempio, supponiamo di dover eseguire alcune operazioni di visualizzazione in base al tipo di classe. Voglio dire, se chiamo il metodo di una classe genitore, visualizzerà un messaggio che è definito in una classe genitore. Ma, quando chiamiamo il metodo della classe figlio, sovrascriverà il messaggio di visualizzazione della sua classe genitrice e mostrerà il messaggio di visualizzazione che è definito all'interno del metodo della classe figlio. Quindi, a seconda del display che dobbiamo mostrare, possiamo chiamare la classe correlata (genitore o figlio). Qui non stiamo cambiando il nome del metodo, l'argomento e il tipo restituito. Stiamo solo cambiando la funzionalità del metodo in classe figlio. Ma, invece di questo, se non eseguiamo l'override, ovvero non forniamo l'implementazione specifica del metodo figlio, durante la chiamata del metodo, verrà visualizzato lo stesso messaggio presente in una classe genitore.
  • Durante la scrittura del codice, useremo l'annotazione @ Override prima che il metodo venga sovrascritto. L'annotazione @Override dice al compilatore che il metodo dovrebbe sovrascrivere un metodo dichiarato in una superclasse. Sebbene non sia obbligatorio utilizzarlo, aiuta a prevenire errori. Se un metodo annotato con @Override non riesce a sovrascrivere un metodo, il compilatore genera un errore.

Regole per l'override del metodo Java

  1. Il metodo deve avere lo stesso nome della classe genitore
  2. Il metodo deve avere lo stesso parametro della classe genitore.
  3. Deve esserci una relazione IS-A (eredità).

Codice:

//Parent or Super class
class Parent (
public void display() (
system.out.printin("Hello, I am from parent class");
)
)
//Child or sub class
class Sub extends Parent (
//Below method overrides the Parent display() method
// @override
public void display() (
system.out.printin("Hello, I am from child class");
)
)
//Driver class
public class Overriding (
public static void main?(String args())
(
Parent superObject = new Parent ();
superObject.display(); // Super class method is called
Parent subObject = new Sub();
subObject.display(); //Child class method is called by a parent type reference: this is functionality of method overriding
Sub subObject2 = new Sub(); //Child class method is called by a child type reference
subObject2.display();
)
)

Produzione:

Limitazioni nel metodo Override:

  1. I metodi privati ​​della classe genitore non possono essere sovrascritti.
  2. I metodi finali non possono essere ignorati
  3. I metodi statici non possono essere ignorati

Punti da notare per l'override

  • Il sovraccarico in java è fondamentalmente un "polimorfismo di runtime". Il polimorfismo di runtime in java è anche chiamato "Dispatch del metodo dinamico" o "Rilegatura tardiva". Quindi cosa si intende con quel gergo?
  • Il polimorfismo, come suggerisce il nome, è fondamentalmente una capacità di assumere molte forme (poli: molti, morph: forma). Quindi, qui la chiamata a una funzione sovraccaricata con l'oggetto viene eseguita il tempo di esecuzione. Quindi chiamato polimorfismo del tempo di esecuzione.
  • Fondamentalmente qui, l'associazione della funzione all'oggetto viene eseguita in ritardo, ovvero dopo la compilazione (ovvero durante il tempo di esecuzione); quindi è anche chiamato "Late binding".
  • L'invio dinamico è un tipo di polimorfismo o invio di metodo che indica come java selezionerà quale funzionalità del metodo verrà utilizzata in fase di esecuzione. Quindi il nome è anche noto come metodo dinamico Dispatch.

Conclusione

Questo conclude il nostro apprendimento dell'argomento "Sovraccarico e override in Java". Scrivi i codici citati negli esempi precedenti nel compilatore Java e controlla l'output. L'apprendimento dei codici sarà incompleto se non lo farai da solo in quanto ciò migliorerà le tue capacità di codifica. Buona programmazione !!

Articoli consigliati

Questa è una guida per il sovraccarico e l'override in Java. Qui discutiamo i metodi in Overloading insieme a regole e limitazioni di Override in Java. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. Sostituzione in JavaScript
  2. Sostituzione in OOP
  3. Cosa sono i generici in Java?
  4. Sostituzione in PHP
  5. Sovraccarico di Python
  6. Eredità in PHP
  7. Guida completa all'ereditarietà in Python
  8. Sovraccarico e override in C #
  9. Tipi ed errori di gestione in JavaScript
  10. Esempi e come funzionano i generici in C #
  11. Funzione e regole di override in Python

Categoria: