概要
RubyのModuleについてかく。
Moduleとは
クラスや他のモジュールに共通のメソッドや定数を提供するための仕組み。
Moduleはクラスと異なり、インスタンス化できない。また継承もできない。
モジュールにはクラスメソッドやインスタンスメソッドを定義することができる。
クラスメソッドはモジュールのinclude先で呼び出すことができない。
名前空間
名前空間を用意するために使うことができる。
Mixin
継承を用いずクラスにインスタンスメソッドを追加・上書きすることができる。
クラスは多重継承ができないが、ModuleのMixinにより多重継承を実現できる。
ちなみにMixinとTraitは似ているが、Mixinは継承を用いているのに対して、Traitは継承以外の様々方法によってもメソッドを合成することができるものであり、ややニュアンスが異なる。
cf. ja.wikipedia.org - Mixin cf. ja.wikipedia.org - トレイト
extendを使ったクラスへの特異メソッド追加
extendを使うことで、クラスに特異メソッドを追加することができる。