Common Lisp Object System
引数の型と継承関係に応じて、適用してよいメソッドを集める。
クラスpersonがクラスanimalを継承しているとする。p1とp2は共にpersonのインスタンスである。総称関数reactionの以下のような呼び出し
について、メソッドが以下のように定義されている場合、
上の4つはすべて適用可能メソッドである。
CLOS は多重継承機能をもち、プログラミングスタイルとしてもMixinとして活用されてもいる。標準ではクラス優先順位リストをトポロジカルソートする戦略に加え、メソッドの起動順序のカスタマイズ等が可能であり、C++等にみられる菱形継承問題等は顕在化しない。また、クラス優先順位リストのソートの戦略もCLOS MOPによりクラスごとにユーザーがカスタマイズが可能である。