• 締切済み

Rubyのsuperclassメソッドについて

Rubyについての質問です。処理系は1.8.7です。 class Foo def initialize(a) @a = a end end のようなクラスを作成し、そのインスタンスを foo = Foo.new(1) のように作成します。 このとき、 foo.superclassを呼び出すと NoMethodError: undefined method `ancestors' for #<Foo:0x2b691220cc88 @a=1> とエラーになります。 一方で class FooExt < Foo def initialize (a,b) @b = b super a end end のようにFooを継承したクラスを作り、 fooext = FooExt.new(1,2) fooext.superclass とすると => Foo とsuperclassメソッドが動作します。 このsuperclassメソッドはどこで追加されたものなのでしょうか?

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

勘違いでは? superclassは、Classクラスのインスタンスメソッドなので、標準ではそれ以外のオブジェクトに対しては定義されていません。 なので、 fooext.superclass => undefined method `superclass' for #<FooExt:0x283220d0 @b=2, @a=1> (NoMethodError)

関連するQ&A