In Java, l’overloading e l’overriding sono due concetti fondamentali della programmazione orientata agli oggetti (OOP).

Overloading

L’overloading si riferisce alla possibilità di definire più metodi con lo stesso nome all’interno di una stessa classe, ma con numero e/o tipo di parametri diversi.

Ciò significa che il metodo può essere chiamato con argomenti diversi, e il compilatore Java sceglierà il metodo corretto in base ai parametri passati.

Regole per l'Overloading

  • Stesso nome: i metodi devono avere lo stesso nome.
  • Parametri diversi: i metodi devono avere parametri diversi (numero, tipo o ordine).
  • Tipo di ritorno: il tipo di ritorno dei metodi può essere diverso, ma non è necessario.
  • Modificatore di accesso: il modificatore di accesso può essere diverso, ma non è necessario.

Extra: Overloading di un metodo Generico

Overriding

L’overriding si riferisce alla possibilità di ri-implementare un metodo di una classe padre all’interno di una classe figlia.

Regole per l'Overriding

  • Stessa intestazione: il metodo deve avere la stessa intestazione (stesso tipo di output, stessi campi in input).
  • Modificatore di accesso: il modificatore di accesso può essere diverso, ma deve essere uguale o più forte (ad esempio, si può usare public se il metodo padre era protected, ma non si può usare private se il metodo padre era public).
  • Metodi final o private: non si può fare un override di un metodo final o private.

Inoltre, è importante utilizzare l’annotazione @Override per indicare al compilatore che si sta ridefinendo un metodo esistente.