私が知る限り、Groovyにはすでにミックスインがあります.Scalaには特色があります。 Cファミリーには複数の継承があります。なぜ、Javaの新しい機能が「拡張メソッド」と呼ばれていますか?それは同じもののちょうど異なる名前ですか、別の理由がありましたか?形質とミックスインとの違いは何ですか?彼らは何を追加し、何が欠けていますか?Java 8拡張メソッド - なぜミックスインや特性と呼ばれていないのですか?
私はそれらを「拡張メソッド」よりも「実装方法」と見ています。
私が知る限り、Groovyにはすでにミックスインがあります.Scalaには特色があります。 Cファミリーには複数の継承があります。なぜ、Javaの新しい機能が「拡張メソッド」と呼ばれていますか?それは同じもののちょうど異なる名前ですか、別の理由がありましたか?形質とミックスインとの違いは何ですか?彼らは何を追加し、何が欠けていますか?Java 8拡張メソッド - なぜミックスインや特性と呼ばれていないのですか?
私はそれらを「拡張メソッド」よりも「実装方法」と見ています。
なぜJavaの新機能は「拡張メソッド」と呼ばれていますか?
AFAIK、この名前はC#から来ています。仮想拡張メソッドはメソッドのためだけであり、mixinsとtraitsはフィールドにも適用されます。
Interface evolution via virtual extension methods注:Brian自身が「Defenderメソッド」と呼んでいますが、「仮想拡張メソッド」がより広く認識されていると思います。
JVM Language Summit 2011 - Brian Goetz私はこれがなぜ彼の名前があるのかについて彼が話すところであると確信しています。
実際、mixinsは動作と状態継承の両方を行いますが、特性は動作のみを与えます。 私が知っているように、Scalaには「Traits」があり、状態継承を受けていますが、正確にはそれらは混在しています。 – Enkk
大きな違いの1つは、インターフェイスにインスタンスフィールドを使用できないことです。 – yshavit