継承されたメソッドの戻り値の型の共分散をサポートしている言語は何ですか?

StackOverflow https://stackoverflow.com/questions/47009

質問

最初に質問したのは この質問, 、しかし、答えを見つける中で、私の元の問題は、継承されたメソッドの戻り値の型の共分散が 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 にもそれが欠けています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top