¿Sobrecarga con diferente tipo de retorno en Java?

Resuelto nunos asked hace 14 años • 10 respuestas

¿Por qué no es posible sobrecargar una función simplemente cambiando el tipo de retorno? ¿Eso cambiará en una versión futura de Java?

Por cierto, sólo como referencia, ¿es esto posible en C++?

nunos avatar Mar 14 '10 02:03 nunos
Aceptado

No puedes hacerlo en Java y no puedes hacerlo en C++. La razón es que el valor de retorno por sí solo no es suficiente para que el compilador determine qué función llamar:

public int foo() {...}
public float foo() {..}

...
foo(); // which one?
Alexander Gessler avatar Mar 13 '2010 19:03 Alexander Gessler

La razón es que las sobrecargas en Java sólo se permiten para métodos con firmas diferentes .

El tipo de retorno no forma parte de la firma del método, por lo que no se puede utilizar para distinguir sobrecargas.

Consulte Definición de métodos en los tutoriales de Java.

Oded avatar Mar 13 '2010 19:03 Oded

Antes de Java 5.0, cuando se anula un método, tanto los parámetros como el tipo de retorno deben coincidir exactamente. En Java 5.0, se introduce una nueva función llamada tipo de retorno covariante. Puede anular un método con la misma firma pero que devuelva una subclase del objeto devuelto. En otras palabras, un método en una subclase puede devolver un objeto cuyo tipo sea una subclase del tipo devuelto por el método con la misma firma en la superclase.

Daniil Iaitskov avatar Jan 19 '2013 16:01 Daniil Iaitskov