2013-06-11 8 views
7

私が知る限り、Groovyにはすでにミックスインがあります.Scalaには特色があります。 Cファミリーには複数の継承があります。なぜ、Javaの新しい機能が「拡張メソッド」と呼ばれていますか?それは同じもののちょうど異なる名前ですか、別の理由がありましたか?形質とミックスインとの違いは何ですか?彼らは何を追加し、何が欠けていますか?Java 8拡張メソッド - なぜミックスインや特性と呼ばれていないのですか?


私はそれらを「拡張メソッド」よりも「実装方法」と見ています。

+5

大きな違いの1つは、インターフェイスにインスタンスフィールドを使用できないことです。 – yshavit

答えて

7

なぜJavaの新機能は「拡張メソッド」と呼ばれていますか?

AFAIK、この名前はC#から来ています。仮想拡張メソッドはメソッドのためだけであり、mixinsとtraitsはフィールドにも適用されます。

Interface evolution via virtual extension methods注:Brian自身が「Defenderメソッド」と呼んでいますが、「仮想拡張メソッド」がより広く認識されていると思います。

JVM Language Summit 2011 - Brian Goetz私はこれがなぜ彼の名前があるのか​​について彼が話すところであると確信しています。

+3

実際、mixinsは動作と状態継承の両方を行いますが、特性は動作のみを与えます。 私が知っているように、Scalaには「Traits」があり、状態継承を受けていますが、正確にはそれらは混在しています。 – Enkk

関連する問題