mixin とはオブジェクト指向プログラミング言語において、サブクラスによって継承されることにより機能を提供し、単体で動作することを意図しないクラスである。言語によっては、その言語でクラスや継承と呼ぶものとは別のシステムとして mixin がある場合もある(#バリエーションの節で詳述)。 オブジェクト指向プログラミングにおいて、継承は本来は特化を意図したものである。すなわち、継承する側(派生型)と継承される側(基底型)の間にはリスコフの置換原則があることを前提とする。 しかし実際のところは、実装の再利用のための手段として使われることが多い(濫用されがちであるが)。mixin における継承も、前述のような特化のためではなく、複数の機能を集めるための手段である。特にクラスの多重継承が可能なシステムでは、複数の mixin クラスを多重継承し、「単に複数の機能を持つクラス」を簡単に作る、というよ