module Moge def a "moge" end end class Hoge include Moge def a "hoge" + super end end p Hoge.new.a # "hogemoge"と表示
おや、インクルードしたモジュールのメソッドにsuperでアクセスできてしまった。インクルードの実装は継承と同じなのだろうか?
こうなると、型が無いのだからmoduleさえあれば継承なんて要らんような気がしてきた…。
一方、継承を取り除いてインスタンスを作るという機能だけを持つ classと、機能を集約するmoduleをもつという方式も考えられます。 それはそれで面白いと思うのですが、それだとSmalltalk以来積み 上げてきた「継承」という「考える道具」が使えなくなるので、う れしくない側面があります。Rubyは保守的な選択をしました。
Matzにっき(2006-06-24)
ふーん。