terça-feira, 23 de março de 2010

[Java] Usar métodos sobrecarregados


Métodos contidos em uma mesma classe podem ser declarados com um mesmo nome contanto que a sua assinatura seja diferente. Para isso o conjunto de parâmetros desses métodos não pode ser igual (numero, tipo e ordem dos parâmetros diferentes). A sobrecarga de método é geralmente utilizada para implementar métodos com mesmo nome que fazem tarefas iguais ou semelhantes, mas sobre tipos e números de argumentos diferentes e também nos construtores. Um ótimo exemplo de método sobrecarregado é o System.out.print().

Declarando métodos sobrecarregados

O modo de declarar métodos sobrecarregados é identico a declarar métodos normais. A única diferença é o cuidado que se deve ter ao declarar métodos carregados para que suas assinaturas sejam diferentes. Veja abaixo um exemplo de métodos carregados. Neste exemplo, o método sobrecarregado quadrado executa a tarefa de multiplicar um valor int, double ou string por ele mesmo e retorna o valor ao quadrado (No caso de um String apenas concatenar).

Classe com a declaração do método sobrecarregado:

public class MetodosSobrecarregados {
public int quadrado (int i){
return i*i;
}
public double quadrado (double i){
return i*i;
}
public String quadrado (String i){
return i+i;
}
}

Classe que testa o método sobrecarregado:

public class TestaSobrecarga {
public static void main(String[] args) {
int x = 2;
double y = 36.75;
String z = "CARINA_CALIXTO_";
MetodosSobrecarregados ms = new MetodosSobrecarregados();

System.out.println("Quadrado de " + x + ": " + ms.quadrado(x));
System.out.println("Quadrado de " + y + ": " + ms.quadrado(y));
System.out.println("Quadrado de " + z + ": " + ms.quadrado(z));
}
}

O resultado da execução deste programa é:
Quadrado de 2: 4
Quadrado de 36.75: 1350.5625
Quadrado de CARINA_CALIXTO_: CARINA_CALIXTO_CARINA_CALIXTO_


Como foi dito anteriormente, o compilador distingue entre os métodos quadrado diferentes a partir do parâmetro e não do retorno do método, assim se algum método mesmo possuindo tipo de retorno diferente, se seus parâmetros forem iguais o compilador não poderá distinguir entre os métodos qual o que será utilizado e acarretará assim em erro (o método [nomeDoMétodo] já está definido em [nomeDaClasse]).

2 comentários:

  1. Boa noite Carina!

    Quero lhe agradecer e te dar os parabéns pelo blog! Ele esta sendo muito útil para mim, pois estou prestando concurso e estou tendo que rever toda a materia que aprendi na faculdade! Gosto bastante de java para que haja um entendimento deve se ter didática no material estudado!!

    meus parabens por compartilhar estas diversas informações e muito obrigado!!

    ResponderExcluir
  2. Carina Muito obrigado! Gostaria de trocar uma ideia com vc, pois estou estudando orientaçao a objetos, mas ando meio desestimulado, rodando a internet achei o seu site, gostei da sua maneira de explicar. quando puder, mande-me um email! bj. obrigado!

    r_luizaylton@ymail.com

    ResponderExcluir