ども、不定期突発的にお騒がせします機械です。
今回は、ドコを引っ張ってきても確実な理解がおぼつかないMix-inについての
質問です。
私の理解に間違いなければ
・多重継承は継承関係がアヤしくなるのでヤめとこう
・でも、オブジェクトをイジるセットを導入したいな
・んじゃ、「継承(inheritance)」でなく「混入(Mix-in)」するか……
ってな感じでマゼたもので、
・あるオブジェクト(Rubyだとモジュールですっけ?)のメソッドは継承し、使
えるけど、型を調べるとそのオブジェクトの子クラスじゃない
となる、でよろしいでしょうか?
とすると、例えばPythonなんかみたいに多重継承できる言語で、メソッドが重
複しないように設計したクラスを、本来の継承すべきクラスより下位に継承させ
るのと、型チェックを行わなければ、結果的には同じことになるんでしょうか?
まぁ、ツールクラスを継承させないとか、そこらへんの「紳士協定」を守ると
して、ということですが……
※推奨されていなくても、禁止されていなければやってしまうのは人の常ですし、
私も散々ヤンチャしますので、そのへんが制限されているのは、すごく理解でき
るのですが……
あと、この考えで間違いないとすると、Javaのinterfaceとは全く逆の意味で
の多重継承の利点を利用するためのもの、ということになるわけですよね。
※Rubyはダックタイピングが可能ですから、interfaceはそもそも不要ですしね
そうそう、Mix-inで導入されたメソッド群って、そのクラスが継承されて子ク
ラスを作った場合、子クラスにも継承されるんですか?(私の感覚では、されて
当然と思うのだけど、それは継承がザルなPythonに慣れすぎたせいかもしれない
し……)
以上、ググってもよくわかんなかったので、ご教示おねがいしまーす。
/機械伯爵/
/「オブジェクト指向スクリプト言語Ruby」はプレミア本かぁ……/