nil

Rubyの勉強しています。いろいろと教えてください。

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メソッド:そのクラスの親クラスを返します。戻り値はクラスオブジェクト。