A partir do Java 5 podemos escrever métodos com um número variável de parâmetros, é o chamado varargs. Com isso podemos criar métodos bem flexÃveis e elegantes, principalmente se aplicando isso juntamente com outros recursos como o loop melhorado e polimorfismo.
Esse exemplo cria uma classe Estatistica com o método media que pode receber um número variável de argumentos do tipo int.
public class Estatistica {
public float media(int... numeros){
float soma = 0;
for(int num: numeros)
soma += num;
return soma/numeros.length;
}
public static void main(String[] args) {
Estatistica est = new Estatistica();
System.out.println( est.media(1,2,3) );
System.out.println( est.media(0,1,2,3,4,5,6,7,8,9,10) );
System.out.println( est.media(10,20,30) );
}
}
$ javac Estatistica.java
$ java Estatistica
2.0
5.0
20.0
Legal, né? Isso sim é sobrecarga de método. 😉
Silveira, mas já tem alguma coisa tipo a sobrecarga do C++? Algo como como eu ter duas funções de mesmo nome, mas funcao(int var) e funcao(char var)?
se for sobrcarga de operador, os sonhos não se realizaram ainda, 😛
Silveira, já que vc está dando uma estudada em java, vê se o varags pode ser usado sem um loop foreach, porque até hoje eu não sei que diabos os três pontinhos são de verdade, :/
Esdras, tem sobrecarga de método sim, você pode mudar os parâmetros, o tipo de retorno ou a exceção levantada, para um mesmo nome de método. Agora como o sombriks falou, não tem sobrecarga de operador como em Python, por exemplo.
sombriks, eu acho que eu não entendi bem a pergunta mas acho que o (int… numeros) quer dizer que ele vai receber um vetor de inteiros. Seria o mesmo que (int [] numeros).
[…] Exemplo retirado de:Â http://silveiraneto.net/2008/02/05/java-metodos-com-numero-variavel-de-parametros/ […]