モジュール
- 「インスタンス化できないクラス」のようなもの。
-
Class
クラスはModule
クラスのサブクラス。 - 「クラス = モジュール + インスタンス化能力」
-
Mix-in
-
制限された多重継承
-
Rubyは、クラスは1つしか継承できない。
-
Rubyは、モジュールという「クラスのようだがクラスではない」ものならば何個でも継承できる。
- クラスがモジュールを継承することを
include
すると呼ぶ。
- クラスがモジュールを継承することを
モジュールと継承
-
include
したモジュールはクラスのancestors
メソッドに現れる。 -
クラスがモジュールを
include
すると、モジュールのインスタンスメソッドが手に入る。
インスタンス化不能性
- モジュールをインスタンス化することはできない。
- Mix-inはあくまでも「トッピング」。主となるクラスに従として実装を提供するための「機能の集まり」(module)であり、具体的なもの(object)ではない。
名前空間
- 異なる名前空間に属する同じ名前のクラスは、たまたま名前が同じでも別物として扱われる。
- Rubyでは名前空間を提供するためにもモジュールを利用する習慣がある。