燈明ブログ

現状は小池啓仁の応援ブログ

Rubyでは、同じクラスが複数箇所で別々に定義できる?

クラス(たとえばStringX)は、classキーワード,クラス名,本体,endキーワードの順で定義します。
メソッド(たとえばtest2)は、defキーワード,メソッド名,本体,endキーワードの順で定義します。
Rubyでは、以下のように同じクラスが複数箇所で別々に定義できるみたいです。

class StringX
    def test2; print "2222\n" end
end
class StringX
    def test1; print "1111\n" end
end
xxx = StringX.new
xxx.test1
xxx.test2

ちなみに、newメソッドは、StringXクラスでは定義されていませんが、Classというクラスで定義されているらしい。
Rubyでのクラスは、メタクラスと呼ばれる名前のないクラスをクラスとして持っていて、Classはそのメタクラスのクラスとのこと(わかる?)。

実は、私も、今のレベルでは、よくわからない・・・。