Galera, eu sei que é possível criar métodos de mesmo nome recebendo parâmetros diferentes, mas é possível criar métodos de mesmo nome que retornem parâmetros diferentes?
Exemplo:
public int x{
…
}
public String x{
…
}
Galera, eu sei que é possível criar métodos de mesmo nome recebendo parâmetros diferentes, mas é possível criar métodos de mesmo nome que retornem parâmetros diferentes?
Exemplo:
public int x{
…
}
public String x{
…
}
Sim, desde que a lista de parâmetros seja diferente.
Q retornem atributos diferentes, vc quis dizer?
Como o @rmendes08 disse, sim, desde que os parâmetros sejam distintos.
Veja os exemplos:
public String processar() {
return "Este método não funciona";
}
public int processar() {
System.out.println("Este método não funciona";
return 0;
}
Agora, me diga, se você tiver a chamada:
String msg = processar();
Qual dos métodos deveria ser chamado?
É a mesma questão que o compilador enfrenta, caso você tenha dois ou mais métodos de mesmo nome, mas com assinaturas iguais. O java vai ler a parte após a igualdade e, tentar fazer o seu serviço (invocar um método). Como ele não saberia qual método, você teria um erro de execução.
É por isso que você precisa diferenciar os métodos de mesmo nome de alguma maneira. Como? Com o número e tipo de parâmetros que os métodos recebem.
public String processar(String nome) {
return nome + ", este método não funciona";
}
public int processar() {
System.out.println("Este método não funciona";
return 0;
}
Agora é fácil para todo mundo entender isso, inclusive, o compilador.
Ficou mais claro?
Ele quis dizer que retornem tipos de dados diferentes.
O compilador Java só permite a sobrecarga de métodos utilizando tipos de parâmetros ou quantidades de parâmetros diferentes.
Entretanto a máquina virtual Java permite que um bytecode possua sobrecarga de métodos com os mesmos parâmetros, só modificando o tipo de dado retornado.
Alguns ofuscadores possuem uma opção para habilitar isso, é o chamado aggressive overloading.
O tipo de dado do retorno faz parte da assinatura de um método.
A máquina virtual sabe identificar isso, quem não permite essa construção é o compilador, assim como ele também não permite o uso de goto e const, mesmo a máquina virtual tendo suporte à elas.

Vivendo e aprendendo.
Sim, desculpem o equivoco, realmente era que retornassem tipos de dados diferentes.