Mix-in(2)

 前回多重定義がもたらす問題点をいくつか挙げました。どれも致命的な問題では無く、プログラマが細心の注意を払えば回避できる所です。が、そもそもなぜプログラマがそんな事に注意を払わなければならないんだという文句があるわけです(笑)

 Javaでは単一継承しか出来ません。その代わりインターフェイスクラスという概念があり、多重継承と同じ事を実現したい場合、これを使うことになります。インターフェイスクラスは、字義通りインターフェイスしかない(実装を記述しない)クラスの事で、これを組み込んだクラスは、インターフェイスクラスの中の個々のメンバを実装する必要があります。

 これ、確かに多重継承を回避しているんですけど、複数のクラスで一つの実装をインターフェイス経由で共有したい場合、個々のクラスで実装とインターフェイスをつなげるコード(配管コードとかglue code(モジュールとモジュールをつなぐためのコード)とか呼ばれています)を書かなきゃいけない為「なんか無駄な事をしている」という罪悪感と日々闘う特典がついてきます(笑)