Pergunta

Eu perguntei originalmente essa questão, mas ao encontrar uma resposta, descobri que meu problema original era a falta de suporte em C# para covariância nos tipos de retorno de métodos herdados.Depois de descobrir isso, fiquei curioso para saber quais idiomas fazer suporte a esse recurso.

Aceitarei a resposta de quem puder citar mais.

EDITAR:John Millikin apontou corretamente que muitas linguagens dinâmicas suportam isso.Esclarecer:

Estou procurando apenas linguagens estáticas/fortemente digitadas.

Foi útil?

Solução

  • C++
  • Java
  • REALbásico
  • Eiffel
  • Pai
  • Módulo-3

Outras dicas

Qualquer linguagem dinâmica, é claro – Python, Ruby, Smalltalk, Javascript, etc.

Basicamente, o que estou perguntando é quais idiomas suportam o que estou tentando fazer aqui.

C# permite especificar diferentes tipos de dados para o get() e set() métodos?Se não, eu os dividiria em reais Leg get_leg() e set_leg(DogLeg) funções.Caso contrário, uma de duas coisas acontecerá:1) superespecificação de get_leg() 2) subespecificação de set_leg().

Java adicionou suporte para isso em 1.5.Não será compilado em versões anteriores.

Conforme apontado por Ivan Hamilton e Mat Noguchi, C++ oferece suporte ao recurso.Mas observe que os tipos de retorno covariantes são quebrados para classes de modelo que herdam de alguma base no MSVC 7.X a 9.X (e provavelmente 6 também).Você recebe o erro C2555.

C++ oferece suporte a tipos de retorno covariantes.

mas acho que é isso que estou pedindo..ou é?

Sinceramente, não sei o que você está perguntando.Aparentemente, Java tem o mesmo suporte para covariância de tipo de retorno que C#; portanto, se o que você procura está faltando em C#, também está faltando em Java.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top