Pregunta

originalmente pregunté esta pregunta, pero al encontrar una respuesta, descubrí que mi problema original era la falta de soporte en C# para la covarianza en los tipos de retorno de los métodos heredados.Después de descubrir eso, sentí curiosidad por saber qué idiomas hacer admite esta característica.

Aceptaré la respuesta de quien más pueda nombrar.

EDITAR:John Millikin señaló correctamente que muchos lenguajes dinámicos admiten esto.Para aclarar:

Solo busco lenguajes estáticos o fuertemente tipados.

¿Fue útil?

Solución

  • C++
  • Java
  • REALbásico
  • eiffel
  • Sather
  • Módulo-3

Otros consejos

Cualquier lenguaje dinámico, por supuesto: Python, Ruby, Smalltalk, Javascript, etc.

Básicamente, lo que pregunto es qué idiomas admiten lo que intento hacer aquí.

¿C# le permite especificar diferentes tipos de datos para el get() y set() ¿métodos?Si no, los dividiría en reales. Leg get_leg() y set_leg(DogLeg) funciones.De lo contrario sucederá una de dos cosas:1) sobreespecificación de get_leg() 2) subespecificación de set_leg().

Java agregó soporte para esto en 1.5.No se compilará en versiones anteriores.

Como señalaron Ivan Hamilton y Mat Noguchi, C++ admite esta función.Pero tenga en cuenta que los tipos de retorno covariantes están rotos para las clases de plantilla que heredan de alguna base en MSVC 7.X a 9.X (y probablemente también 6).Aparece el error C2555.

C++ admite tipos de retorno covariantes.

pero creo que eso es lo que estoy pidiendo... ¿o no?

Francamente no sé lo que estás preguntando.Aparentemente, Java tiene el mismo soporte para la covarianza de tipo de retorno que C#, por lo que si lo que estás buscando falta en C#, también falta en Java.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top