é possibile dichiarare un metodo più volte con lo stesso nome ma tipo e numero di parametri diversi
dal punto di vista dell'utilizzo della classe ciò ci consente di definire in maniera dinamica il metodo che meglio si adatta alla nostra esigenza
si possono anche essere dichiarati nella classe di origine e quella derivata, si tratta comunque di overloading

esempio: 2 metodi con diversi parametri
public double areaParallelogramma(double base, double altezza) metodo 1 con due parametri
{

double a = base * altezza;
return a;
}

public double areaParallelogramma(double c1, double c2, double alfa) metodo 2 con tre parametri
{
double a = c1 * c2 * Math.sin(alpha);
return a;
}


esempio: stesso metodo ma con parametri di tipo e numero diverso
public static void main(String[] args)
{

Visualizza();
Visualizza("ciao mondo");
Visualizza(10);
Visualizza(10,20);
}

static public void Visualizza()
{
System.out.println("ciao mondo");
}

static public void Visualizza(String testo)
{
System.out.println(testo);
}

static public void Visualizza(int numero)
{
numero++;
System.out.println("numero +1 = " + numero);
}

static public void Visualizza(int numero1, int numero2)
{
int numero = numero1 + numero2;
System.out.println(numero1 + " + " + numero2 + " = " + numero);
}




varargs

al fine di evitare la dichiarazione di tanti metodi con stesso nome ma paramerei diversi, é possibile utilizzare il varargs (Variable Arguments) un meccanismo per definire un numero di argomenti indefinito.

sintassi:
modificatore_accesso NOME(tipo_valore... nomeparametro)
si usano i 3 punti ...


esempio:
public class VarargsTest
{

public void testVarargs(String... list)
{
for (String tmp:list)
{
System.out.println("#" + tmp);
}
}

public static void main(String[] args)
{
VarargsTest va=new VarargsTest();

va.testVarargs("do","re","mi","fa","sol","la","si");
va.testVarargs("1","2","3","4");
}
}