Rubyリファレンス: Home

initialize (Class)

Edit   History

標準クラス・モジュール > Class > initialize

Class.new(superclass = Object)

クラスメソッドnewは、新しいクラスを作成して返します。クラス定義「class クラス名 ~ end」を使わなくてもクラスが作成できます。作成されたクラスは無名のクラスになります。

引数superclassには親クラスを指定できます。デフォルトはObjectです。

次の例のklassは新しい無名のクラス、objはそのクラスのインスタンスになります。

klass = Class.new
p klass
obj = klass.new
p obj
#<Class:0x3916a58>
#<#<Class:0x3916a58>:0x39169f8>
Class.new(superclass = Object) {|kls| block }

newメソッドにブロックを渡すと、そのブロックをクラス定義の中であるように実行します。ブロック変数klsには新しいクラスが渡されます。

次の例では、Stringクラスのサブクラスである無名のクラスを作成しています。

klass = Class.new(String) do |kls|
  def double
    self + self
  end
end
 
str = klass.new("hello")
puts str.double
hellohello

詳細

このnewメソッドの仕様は、実際にはClassクラスのinitializeメソッドの仕様です。Class.newを実行すると、Classクラスのインスタンスメソッドnewinitializeが実行されます。

関連項目