Question

J'ai demandé à l'origine cette question, mais dans la recherche d'une réponse, a découvert que mon problème était un manque de soutien en C# pour la covariance sur les méthodes héritées' types de retour.Après la découverte, je suis devenu curieux de savoir ce qu'langues faire en charge cette fonctionnalité.

Je vais accepter la réponse de celui qui peut le nom de la plus.

MODIFIER:Jean Millikin correctement souligné que beaucoup de langages dynamiques en charge cette.Pour clarifier:

Je suis seulement à la recherche de statique/langages fortement typés.

Était-ce utile?

La solution

  • C++
  • Java
  • REALbasic
  • Eiffel
  • Sather
  • Modula-3

Autres conseils

Dynamique des langues, évidemment, Python, Ruby, Smalltalk, Javascript, etc.

Fondamentalement, ce que je vous demande est ce que les langues de l'appui de ce que je suis en train de faire ici.

Est-ce que C# permet de définir des types de données pour les get() et set() méthodes?Si non, je voudrais diviser en réel Leg get_leg() et set_leg(DogLeg) fonctions.Sinon, on peut se passer deux choses:1) overspecification de get_leg() 2) underspecification de set_leg().

Java a ajouté le support pour cette version 1.5.Il ne compile pas dans les versions antérieures.

Comme le souligne Ivan Hamilton et Tapis de Noguchi, C++ prend en charge cette fonctionnalité.Mais notez que covariante des types de retour sont cassés pour le modèle des classes qui héritent de base dans MSVC 7.X 9.X (et probablement 6 également).Vous obtenez l'erreur C2555.

C++ prend en charge covariante des types de retour.

mais je pense que c'est ce que je demande..ou est-il?

Franchement, je ne sais pas ce que vous demandez.Java a apparemment le même soutien de retour de covariance C#, donc, si ce que vous recherchez est absente en C#, il manque de Java aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top