What languages support covariance on inherited methods' return types?我最初问这个问题,但是在寻找答案时,发现我最初的问题是C#中缺少对继承方法的返回类型进行协方差的支持。 发现这一点之后,我对哪些语言支持此功能感到好奇。 我会接受谁能说出最多的名字的答案。 编辑:约翰·米利金(John Millikin)正确地指出,许多动态语言都支持这一点。 澄清: 我只在寻找静态/强类型语言。
当然,任何动态语言-Python,Ruby,Smalltalk,Javascript等。 正如Ivan Hamilton和Mat Noguchi指出的那样,C ++支持该功能。但是请注意,对于从MSVC 7.X到9.X的某个基类继承的模板类(可能还有6个),协变量返回类型是无效的。您收到错误C2555。 Java在1.5中增加了对此的支持。它不会在早期版本中编译。 C ++支持协变返回类型。
C#是否允许您为
坦白说,我不知道你在问什么。 Java显然对返回类型协方差的支持与C#相同,因此,如果您要查找的内容缺少C#,那么Java也将缺少它。 |