哪些语言支持继承方法的返回类型的协方差?

时间:2008-09-05 22:37:23

标签: c# java oop programming-languages covariance

我最初问this question,但在找到答案时,发现我原来的问题是C#缺乏对继承方法返回类型的协方差的支持。在发现之后,我对支持此功能的语言感到好奇。

我会接受最能说出名字的人的答案。

编辑:John Millikin正确地指出,许多动态语言都支持这一点。澄清:

我只是在寻找静态/强类型语言。

7 个答案:

答案 0 :(得分:4)

  • C ++
  • 爪哇
  • REALbasic的
  • 艾菲尔
  • Sather
  • Modula一3

答案 1 :(得分:2)

任何动态语言,当然 - Python,Ruby,Smalltalk,Javascript等。

答案 2 :(得分:0)

  

基本上我要问的是什么语言支持我在这里尝试做的事情。

C#是否允许您为get()set()方法指定不同的数据类型?如果没有,我会将它们分成实际的Leg get_leg()set_leg(DogLeg)函数。否则会发生以下两种情况之一:1)get_leg()的过度指定2 set_leg()的指定不足。

答案 3 :(得分:0)

C ++支持协变返回类型。

答案 4 :(得分:0)

Java在1.5中增加了对此的支持。它不会在早期版本中编译。

答案 5 :(得分:0)

正如Ivan Hamilton和Mat Noguchi所指出的,C ++支持该功能。但请注意,协变返回类型对于从MSVC 7.X到9.X(也可能还有6)继承的模板类而被破坏。你得到错误C2555。

答案 6 :(得分:-1)

  

但我认为这就是我要求的......或者是它?

我坦率地不知道你在问什么。 Java显然对返回类型协方差的支持与C#相同,所以如果C#缺少你想要的东西,那么它也缺乏Java。