Ruby のクラス内の self は、何クラスなのか調べてみる

やってみる

とにかく、以下のようにして self のクラスを出力してみる。

f:id:matt-note:20181029161730p:plain

 

すると、以下のようになった。インスタンスメソッド内の self は Foo クラスとなる。それ以外の self は Class クラスと出力した。

f:id:matt-note:20181029161750p:plain

 

スーパークラスを呼び出してみる

以下のようにして、スーパークラスを呼び出してみた。

f:id:matt-note:20181029162319p:plain

 

すると、以下のように出力した。インスタンスメソッド内の self のクラスである Foo クラスのスーパークラスは Object となった。Class クラスの1つ上のスーパークラスは Module を出力した。Module のスーパークラスは Object を出力した。

f:id:matt-note:20181029162329p:plain

 

まとめ

Class クラスの1つ上のスーパークラスは Module。独自で定義したクラスのスーパークラスの1つ上のスーパークラスは Object になる。 独自で定義したクラスは、デフォルトで Object クラスを継承している。

参考