だいぶ曖昧なのは自分の理解が足りないため。
クラス/Class/classの表記方法について
クラス/Class/classはすべて異なる(ものとして表記している)。
クラス
オブジェクト指向における一般的な意味のクラス。
Class
クラスを表現するのに使用される普通のオブジェクト。
メソッドも持ってる。
すべての道はBasicObjectに通ず
MyClassを定義する。
[22] pry(main)> class MyClass; end
MyClassのスーパークラスをたどってみる。
[23] pry(main)> MyClass.superclass => Object [24] pry(main)> MyClass.superclass.superclass => BasicObject [25] pry(main)> MyClass.superclass.superclass.superclass => nil
MyClass -> Object -> BasicObjectの順で階層構造。
BasicObjectは親を持たない。
Classのスーパークラスをたどってみる。
[34] pry(main)> Class.superclass => Module [35] pry(main)> Class.superclass.superclass => Object [36] pry(main)> Class.superclass.superclass.superclass => BasicObject [37] pry(main)> Class.superclass.superclass.superclass.superclass => nil
Class -> Module -> Object -> BasicObject という階層構造になっている。
みんなのClass
MyClass, Class, Module, Object, BasicObjectのクラスはClassである。
[27] pry(main)> MyClass.class => Class [28] pry(main)> Class.class => Class [29] pry(main)> Module.class => Class [30] pry(main)> Object.class => Class [31] pry(main)> BasicObject.class => Class
Classちゃんはみんなの友達なんだからっ!
トップレベルのオブジェクト
mainというObjectクラスのインスタンス(?)が用意されている。
[50] pry(main)> self => main [51] pry(main)> self.class => Object
タイトルは「パルスのファルシのルシがパージでコクーン」を意識した。