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
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
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