混合物とは何ですか?

コンピュータープログラミングでは、Mixinは別のクラスに継承されているが、インスタンス化することを意図したクラスです。単一のクラスは多くのミックスを継承できるため、多くの機能コレクションを簡単に統合できます。多くの一般的なプログラミング言語はMixin方法論を使用していますが、C ++やJavaを含む多くのものがありません。一般に、ミキシンは、Scripting LanguagesまたはJavaScriptやPerlなどのスクリプトを作成する機能を備えた言語で見つかります。それらの方法と定数はサブクラスに含まれています。 Mixinクラスのもう1つのユニークな特徴は、方法を定義して実行時にオブジェクトにバインドできることです。ほとんどの言語は、ランタイムではなくコンパイル時に別のアプローチ、拘束力のあるメソッド、および定義を使用します。このランタイムバインディングにより、ミキシンは非常に柔軟になります。

一般的な問題多重継承のEMはメソッド呼び出しのあいまいさであり、ミックスインは複数の継承とまったく同じルールに従わないため、この問題を解決できます。たとえば、複数の継承は、親クラスAにサブクラスBとCがあり、クラスDがクラスBとCの両方から継承されるいわゆる「死のダイヤモンド」を作成することができます。このシナリオの問題は、クラスA、B、Cの同じ名前をクラスDに継承し、明確な区別なしの同じ方法の複数のバージョンを作成できることです。 Mixinsは、標準の多重継承のようにそれらを上書きしようとするのではなく、メソッドの各バージョンを明確に保つことにより、この問題を解決します。

ミックスインは、それらが継承されているクラスの方法を無効にしません。たとえば、クラスAがメソッド「mymethod」を定義し、メソッド「mymethod」も定義するミックスインBを継承した場合、これらのメソッドはどちらもあいまいさなしに呼び出され、クラスAでの「mymethod」の実装は依然として呼び出されます。それでも完全にアクセスできます。これらの方法がどのように呼ばれるかは、ミックスインが実装される言語によって異なります。

Javaなどのミックスインを使用しないプログラミング言語は、インターフェイスを使用してそれらを模倣します。インターフェイスには定数とメソッド宣言のみが含まれるため、これらの言語のインターフェイスはミックスインの完全な機能をエミュレートしません。一方、ミキシンには、メソッドの完全な実装を含めることができます。ミキシンをサポートしていない言語には、ほぼ同じことを行うために同アクセスできる実行可能な選択肢があることがよくあります。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?