RubyのModuleについて

概要

RubyのModuleについてかく。

Moduleとは

クラスや他のモジュールに共通のメソッドや定数を提供するための仕組み。

Moduleはクラスと異なり、インスタンス化できない。また継承もできない。

モジュールにはクラスメソッドやインスタンスメソッドを定義することができる。

クラスメソッドはモジュールのinclude先で呼び出すことができない。

名前空間

名前空間を用意するために使うことができる。

Mixin

継承を用いずクラスにインスタンスメソッドを追加・上書きすることができる。

クラスは多重継承ができないが、ModuleのMixinにより多重継承を実現できる。

ちなみにMixinとTraitは似ているが、Mixinは継承を用いているのに対して、Traitは継承以外の様々方法によってもメソッドを合成することができるものであり、ややニュアンスが異なる。

cf. ja.wikipedia.org - Mixin cf. ja.wikipedia.org - トレイト

extendを使ったクラスへの特異メソッド追加

extendを使うことで、クラスに特異メソッドを追加することができる。

参考