作者: 機械伯爵
日時: 2008/2/15(16:25)
 ども、不定期突発的にお騒がせします機械です。

 今回は、ドコを引っ張ってきても確実な理解がおぼつかないMix-inについての
質問です。

 私の理解に間違いなければ

・多重継承は継承関係がアヤしくなるのでヤめとこう
・でも、オブジェクトをイジるセットを導入したいな
・んじゃ、「継承(inheritance)」でなく「混入(Mix-in)」するか……

 ってな感じでマゼたもので、

・あるオブジェクト(Rubyだとモジュールですっけ?)のメソッドは継承し、使
えるけど、型を調べるとそのオブジェクトの子クラスじゃない

 となる、でよろしいでしょうか?

 とすると、例えばPythonなんかみたいに多重継承できる言語で、メソッドが重
複しないように設計したクラスを、本来の継承すべきクラスより下位に継承させ
るのと、型チェックを行わなければ、結果的には同じことになるんでしょうか?

 まぁ、ツールクラスを継承させないとか、そこらへんの「紳士協定」を守ると
して、ということですが……

※推奨されていなくても、禁止されていなければやってしまうのは人の常ですし、
私も散々ヤンチャしますので、そのへんが制限されているのは、すごく理解でき
るのですが……

 あと、この考えで間違いないとすると、Javaのinterfaceとは全く逆の意味で
の多重継承の利点を利用するためのもの、ということになるわけですよね。

※Rubyはダックタイピングが可能ですから、interfaceはそもそも不要ですしね

 そうそう、Mix-inで導入されたメソッド群って、そのクラスが継承されて子ク
ラスを作った場合、子クラスにも継承されるんですか?(私の感覚では、されて
当然と思うのだけど、それは継承がザルなPythonに慣れすぎたせいかもしれない
し……)

 以上、ググってもよくわかんなかったので、ご教示おねがいしまーす。

 /機械伯爵/
/「オブジェクト指向スクリプト言語Ruby」はプレミア本かぁ……/