Rubyのクラスについて
Rubyはすべてオブジェクトなのでクラスもオブジェクトです。クラスはClassクラスのインスタンスになります。
classを定義方法は以下、
class hoge end
Classクラス
Classクラスにも親がいます。ancesotresメソッドを使って確認してみます。
Class.ancestors #=> [Class, Module, Object, Kernel, BasicObject]
Classクラスで使用できるメソッドの多くはModuleクラスで定義されています。両者の違いは
- Classはインスタンスが生成できる
- Classは継承する・されることができる
Classクラスで定義されているメソッドは上記2つの機能しかもっていません。では、確認してみます。
Class.instance_methods(false) #=> [:allocate, :new, :superclass]
allocateメソッド:そのクラスのインスタンスとなるオブジェクトを生成しますが、initializeメソッドの呼び出しは行われません。戻り値はnil。
newメソッド:そのクラスのインスタンスとなるオブジェクトを生成し、その際にinitializeメソッドが呼び出します。戻り値は新しいオブジェクト。
superclassメソッド:そのクラスの親クラスを返します。戻り値はクラスオブジェクト。