/** * Questa classe illustra la possibilità di aver vari metodi con lo stesso nome ma con parametri in * input diversi (overloading). */ public class Overloading { // metodo somma che prende in input un array di interi public static int somma(int a[]) { int sum = 0; for (int v : a) sum += v; return sum; } /* * Notare che non posso avere un altro metodo esattamnte con lo stesso nome e gli stessi * parametri in input. Per questo motivo il metodo sotto è commentato. Se lo decommentate questa * classe non può più essere compilata. */ /* public static double somma(int a[]) { return 3.0; } */ // metodo somma che prende in input un array di double public static double somma(double a[]) { double sum = 0.0; for (double v : a) sum += v; return sum; } // metodo somma che prende in input una stringa e un intero public static void somma(String x, int a) { System.out.println(x + a); } public static void main(String[] args) { double a[] = {3.4, 5.6}; // siccome a è un array di double, l'istruzione che segue invoca il 2° metodo somma System.out.println(somma(a)); int b[] = {3, 5, 6}; // siccome b è un array di interi, l'istruzione che segue invoca il 1° metodo somma System.out.println(somma(b)); // siccome "Ciao: " e 2 sono, rispettivamente, una stringa e un intero, l'istruzione // che segue invoca il 3° metodo somma somma("Ciao: ", 2); } }