Skip to main content

混合物とは何ですか?

computerコンピュータープログラミングでは、Mixinは別のクラスに継承されているが、インスタンス化されることを意図していないクラスです。単一のクラスは多くのミックスを継承できるため、多くの機能コレクションを簡単に統合できます。多くの一般的なプログラミング言語はMixin方法論を使用していますが、C ++やJavaを含む多くのものがありません。一般に、ミキシンは、JavaScriptやPerlなどのスクリプトを作成する機能を備えた言語のスクリプト言語に含まれています。それらの方法と定数はサブクラスに含まれています。Mixinクラスのもう1つのユニークな特徴は、方法を定義して実行時にオブジェクトにバインドできることです。ほとんどの言語は、ランタイムではなくコンパイル時に別のアプローチ、拘束力のあるメソッド、および定義を使用します。このランタイムバインディングにより、ミキシンは非常に柔軟になります。たとえば、複数の継承は、親クラスAがサブクラスBとCを持ち、クラスDがクラスBとCの両方から継承されるいわゆる死のダイヤモンドを作成できます。このシナリオの問題は、同じものを持つ方法です。クラスA、B、Cの名前はすべてクラスDに継承でき、同じ方法の複数のバージョンを明確な区別なしで作成できます。Mixinsは、標準的な多重継承のように上書きしようとするのではなく、メソッドの各バージョンを明確に保つことにより、この問題を解決します。たとえば、クラスAがMyMethodメソッドを定義し、MyMethodメソッドも定義したMixin Bを継承した場合、これらのメソッドはどちらもあいまいさなく呼び出され、クラスAでのMyMethodの実装は完全にアクセスできます。これらの方法がどのように呼ばれるかは、ミックスインが実装される言語によって異なります。インターフェイスには定数とメソッド宣言のみが含まれるため、これらの言語のインターフェイスはミックスインの完全な機能をエミュレートしません。一方、ミキシンには、メソッドの完全な実装を含めることができます。ミキシンをサポートしない言語には、ほぼ同じことを行うために同アクセスできる実行可能な選択肢があることがよくあります。