RubyのmoduleのインクルードとClassの継承

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)

ふーん。