クラスとオブジェクト
Ruby プログラムからはクラスもまたオブジェクトとして扱うことができ、文による操作と合わせると以下の基本操作が可能です。
- メソッドの存在を問い合わせる
- メソッドを定義する
- メソッドの定義を取り消す
モジュール
モジュールはメソッドや定数の集まりです。クラスに似ていますが、インスタンスを生成できず、単独では継承関係を持ちません。
クラスにモジュールを include すると、そのモジュールのインスタンスメソッドはクラスのメソッドと同じように呼び出せるようになります。これを Mix-in と呼びます。モジュールは名前空間としても利用されます。
特異クラス
特異クラスは、特定のオブジェクト一つだけに結び付いたクラスです。あるオブジェクトに対して定義されたメソッド(特異メソッド)は、そのオブジェクトの特異クラスにインスタンスメソッドとして定義されます。
class << obj ... end という構文で特異クラスの定義を開くことができます。クラスメソッドは、クラスというオブジェクトに対する特異メソッドです。