3

我最初问了这个问题,但在找到答案时,发现我最初的问题是 C# 中缺乏对继承方法的返回类型的协方差的支持。发现这一点后,我对哪些语言支持此功能感到好奇。

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

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

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

4

7 回答 7

4
  • C++
  • 爪哇
  • 真实基础
  • 埃菲尔
  • 萨瑟
  • 模数 3
于 2008-09-06T07:31:04.310 回答
2

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

于 2008-09-05T22:45:40.313 回答
0

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

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

于 2008-09-05T23:08:26.237 回答
0

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

于 2008-09-05T23:13:35.537 回答
0

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

于 2008-09-08T12:32:23.073 回答
0

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

于 2008-09-16T08:54:20.160 回答
-1

但我认为这就是我要的……或者是吗?

坦率地说,我不知道你在问什么。Java 显然与 C# 具有相同的返回类型协方差支持,因此,如果您要查找的内容在 C# 中缺少,那么 Java 中也缺少。

于 2008-09-05T22:58:46.960 回答