Sobrecarga e Tipo de Retorno

Olá pessoal,

A pergunta é simples:

Porque não posso mudar o tipo de retorno em um método sobrecarregado?

Eu entendo o que é sobrecarga e para que serve, mas não entendo porque não se pode mudar o tipo de dado retornado!

Vlw :slight_smile:

Mas pode mudar o tipo de retorno, porém é obrigatório mudar a lista de argumentos.

Cara do Céu, métodos sobrecarregados podem ter seu tipo de retorno alterado, métodos sobrescritos que não podem.
O metodos sobrescristos nao podem ter o tipo de retorno alterado para que o poliformismo funcione, ou seja imagine um método em que vc recebe um parametro a mãe e la dentro vc use um retorno de um método com int, vc pode passar uma filha que sobrescreva esse método sem problemas porque o tipo de retorno é o mesmo.
Manjou ?

Entendi…

Um adendo:

A partir de uma versão do java (que não lembro de cabeça), o tipo de retorno de um método sobrescrito pode ser alterado, desde que para um tipo que herde do tipo original.

Ao sobrescrever o método clone() (que vem de Object), por exemplo, podemos definir o tipo de retorno como nossa própria classe (conveniente para evitar um cast).

A partir da versão 5 chama-se retorno covariantes

Não é que você não pode alterar o tipo de retorno de um método sobrecarregado, é que o tipo de retorno não faz parte da assinatura do método, logo as regras de sobrecarga de método não se aplicam a ele.
Se você apenas altera o tipo do retorno o compilador dará erro pois os dois métodos possuem a mesma assinatura, ou seja, nome + lista de parâmetros são iguais.

Nos livros de certificação de Java ou mesmo pesquisando no google você acha todas as regras.

[]'s