哪些语言支持继承方法的返回类型的协变?
-
09-06-2019 - |
题
我最初问的是 这个问题, ,但在寻找答案时,发现我最初的问题是 C# 缺乏对继承方法的返回类型的协变的支持。发现这一点后,我很好奇什么语言 做 支持此功能。
我会接受谁能说出最多名字的答案。
编辑:约翰·米利金正确地指出,许多动态语言都支持这一点。澄清:
我只寻找静态/强类型语言。
解决方案
- C++
- 爪哇
- REALbasic
- 埃菲尔铁塔
- 萨瑟
- 模块3
其他提示
当然是任何动态语言——Python、Ruby、Smalltalk、Javascript 等。
基本上我要问的是哪些语言支持我在这里尝试做的事情。
C# 是否允许您指定不同的数据类型 get()
和 set()
方法?如果没有,我会把它们分成实际的 Leg get_leg()
和 set_leg(DogLeg)
功能。否则将会发生以下两种情况之一:1) 过度规范 get_leg()
2) 规格不足 set_leg()
.
Java 在 1.5 中添加了对此的支持。它不会在早期版本中编译。
正如 Ivan Hamilton 和 Mat Noguchi 所指出的,C++ 支持该功能。但请注意,对于从 MSVC 7.X 到 9.X(也可能是 6)中的某个基类继承的模板类,协变返回类型会被破坏。您收到错误 C2555。
C++ 支持协变返回类型。
但我认为这就是我所要求的……或者是吗?
坦白说我不知道你在问什么。显然,Java 与 C# 一样支持返回类型协方差,因此,如果 C# 中缺少您要查找的内容,那么 Java 中也同样缺少。
不隶属于 StackOverflow