継承されたメソッドの戻り値の型の共分散をサポートしている言語は何ですか?
-
09-06-2019 - |
質問
最初に質問したのは この質問, 、しかし、答えを見つける中で、私の元の問題は、継承されたメソッドの戻り値の型の共分散が C# でサポートされていないことであることがわかりました。それを知ってから、何語なのか気になりました する この機能をサポートします。
最もよく名前を挙げられる人の回答を受け入れます。
編集:John Millikin は、多くの動的言語がこれをサポートしていると正しく指摘しました。明確にするために:
私は静的/厳密に型指定された言語のみを探しています。
解決
- C++
- ジャワ
- REALベーシック
- エッフェル
- サザー
- モジュール-3
他のヒント
もちろん、あらゆる動的言語 (Python、Ruby、Smalltalk、JavaScript など)。
基本的に私が求めているのは、ここでやろうとしていることをどの言語がサポートしているかということです。
C# では、さまざまなデータ型を指定できますか? get()
そして set()
方法?そうでない場合は、それらを実際のものに分割します Leg get_leg()
そして set_leg(DogLeg)
機能。そうしないと、次の 2 つのうちのいずれかが発生します。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 にもそれが欠けています。