logo

Differenza tra sovraccarico del metodo e override del metodo in Java

Le differenze tra l'overloading del metodo e l'override del metodo in Java sono le seguenti:

Sovraccarico del metodo



Metodo prioritario

L'overload del metodo è un polimorfismo in fase di compilazione.L'override del metodo è un polimorfismo di runtime.
Il sovraccarico del metodo aiuta ad aumentare la leggibilità del programma.L'override del metodo viene utilizzato per garantire l'implementazione specifica del metodo già fornita dalla classe o superclasse genitore.
Avviene all'interno della classe.Viene eseguito in due classi con relazioni di ereditarietà.
L'overload del metodo può richiedere o meno l'ereditarietà.L'override del metodo necessita sempre dell'ereditarietà.
Nell'overload dei metodi, i metodi devono avere lo stesso nome e firme diverse.Nell'override del metodo, i metodi devono avere lo stesso nome e la stessa firma.
Nell'overload del metodo, il tipo restituito può o non può essere lo stesso, ma dobbiamo solo modificare il parametro.Nell'override del metodo, il tipo restituito deve essere lo stesso o covariante.
L'associazione statica viene utilizzata per i metodi sovraccaricati.L'associazione dinamica viene utilizzata per sovrascrivere i metodi.
Prestazioni scadenti a causa del polimorfismo in fase di compilazione.Dà prestazioni migliori. Il motivo di ciò è che l'associazione dei metodi sovrascritti viene eseguita in fase di esecuzione.
I metodi privati ​​e finali possono essere sovraccaricati.I metodi privati ​​e finali non possono essere sovrascritti.
L'elenco degli argomenti dovrebbe essere diverso durante l'overload del metodo.L'elenco degli argomenti dovrebbe essere lo stesso nell'override del metodo.

Sovraccarico dei metodi in Java

Sovraccarico del metodo è un Polimorfismo in fase di compilazione . Nell'overload dei metodi, più di un metodo condivide lo stesso nome del metodo con una firma diversa nella classe. Nell'overload del metodo, il tipo restituito può o non può essere lo stesso, ma dobbiamo modificare il parametro perché, in Java, non possiamo ottenere l'overload del metodo modificando solo il tipo restituito del metodo.

Esempio di sovraccarico del metodo:



Giava
// Java Program to Implement // Method Overloading import java.io.*; class MethodOverloadingEx {  static int add(int a, int b) { return a + b; }  static int add(int a, int b, int c)  {  return a + b + c;  }  // Main Function  public static void main(String args[])  {  System.out.println('add() with 2 parameters');  // Calling function with 2 parameters  System.out.println(add(4, 6));  System.out.println('add() with 3 parameters');  // Calling function with 3 Parameters  System.out.println(add(4, 6, 7));  } }>

Produzione
add() with 2 parameters 10 add() with 3 parameters 17>

Metodo Overriding in Java

Metodo prioritario è un Polimorfismo in fase di esecuzione . Nell'override del metodo, la classe derivata fornisce l'implementazione specifica del metodo già fornito dalla classe base o dalla classe genitore. Nell'override del metodo, il tipo restituito deve essere lo stesso o covariante (il tipo restituito può variare nella stessa direzione della classe derivata).

Esempio di override del metodo:

Giava
// Java Program to implement // Method Overriding import java.io.*; // Base Class class Animal {  void eat()  {  System.out.println('eat() method of base class');  System.out.println('eating.');  } } // Inherited Class class Dog extends Animal {  void eat()  {  System.out.println('eat() method of derived class');  System.out.println('Dog is eating.');  } } // Driver Class class MethodOverridingEx {  // Main Function  public static void main(String args[])  {  Dog d1 = new Dog();  Animal a1 = new Animal();  d1.eat();   a1.eat();  // Polymorphism: Animal reference pointing to Dog object  Animal animal = new Dog();    // Calls the eat() method of Dog class  animal.eat();   } }>

Produzione
eat() method of derived class Dog is eating. eat() method of base class eating. eat() method of derived class Dog is eating.>

Spiegazione del programma di cui sopra:



Qui possiamo vedere che un metodo eat() ha effettuato l'override nel nome della classe derivata Cane che è già fornito dal nome della classe base Animale . Quando creiamo l'istanza della classe Dog e chiamiamo il metodo eat(), vediamo che viene eseguito solo il metodo della classe derivata eat() invece del metodo della classe base eat(), e quando creiamo l'istanza della classe Animal e chiamiamo il metodo eat( ), vediamo che viene eseguito solo il metodo eat() della classe base invece del metodo della classe derivata eat().