Ruby 2.0.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Classクラス
クラスの継承リスト: Class < Module < Object < Kernel < BasicObject
クラスのクラスです。
より正確に言えば、個々のクラスはそれぞれメタクラスと呼 ばれる名前のないクラスをクラスとして持っていて、Class はそのメタ クラスのクラスです。この関係は少し複雑ですが、Ruby を利用するにあたっ ては特に重要ではありません。
クラスとモジュールには
という違いがありますが、それ以外のほとんどの機能は Module から継 承されています。Module のメソッドのうち
は Class では未定義にされています。
new(superclass = Object) -> Class[permalink][rdoc]new(superclass = Object) {|klass| ... } -> Class新しく名前の付いていない superclass のサブクラスを生成します。
名前のないクラスは、最初に名前を求める際に代入されている定数名を検 索し、見つかった定数名をクラス名とします。
p foo = Class.new # => #<Class:0x401b90f8>
p foo.name # => ""
Foo = foo # ここで p foo すれば "Foo" 固定
Bar = foo
p foo.name # => "Bar" ("Foo" になるか "Bar" になるかは不定)
ブロックが与えられた場合、生成したクラスを引数として クラスのコンテキストでブロックを実行します。以下のコードと同じです。
klass = Class.new(superclass)
klass.module_eval {|m| ... }
klass
この場合も生成したクラスを返します。 ブロックの実行は Class#initialize が行います。
例:
k = Class.new{|c|
def initialize
p "in initialize"
end
def hoge
p "hoge hoge hoge"
end
}
o = k.new #=> "in initialize"
o.hoge #=> "hoge hoge hoge"
_load(str) -> Class[permalink][rdoc]Object#_dump を参照して下さい。
allocate -> object[permalink][rdoc]自身のインスタンスを生成して返します。生成したオブジェクトは 自身のインスタンスであること以外には何も特性を持ちません。
new(*args, &block) -> object[permalink][rdoc]自身のインスタンスを生成して返します。 このメソッドの引数はブロック引数も含め Object#initialize に渡されます。
new は Class#allocate でインスタンスを生成し、 Object#initialize で初期化を行います。
superclass -> Class | nil[permalink][rdoc]自身のスーパークラスを返します。
ただし BasicObject.superclass は nil を返します。
inherited(subclass) -> ()[permalink][rdoc]クラスのサブクラスが定義された時、新しく生成されたサブクラスを引数 にインタプリタから呼び出されます。このメソッドが呼ばれるタイミングは クラス定義文の実行直前です。
例:
class Foo
def Foo.inherited(subclass)
puts "class \"#{self}\" was inherited by \"#{subclass}\""
end
end
class Bar < Foo
puts "executing class body"
end
# => class "Foo" was inherited by "Bar"
executing class body