class A @@x = 0 class << self @@x = 1 def x puts "aaa" @@x end end def x @@x = 2 end end class B < A puts @@x += 100 puts "クラス変数はスーパークラスサブクラスに共有できる" end p A.x
こちらですが出力結果が
101 クラス変数はスーパークラスサブクラスに共有できる aaa 101
になります。
私としては
A.xでAクラスのxメソッドが呼ばれて、
「aaa」が出力されて
@@xの「1」が出力されて
クラスメソッドが共有できるので、Bクラスへいき
Bクラスの
「101」(puts @@x += 100)が呼ばれて、
最後に「"クラス変数はスーパークラスサブクラスに共有できる"」が出力
つまり私の思う出力順としては
aaa 1 101 クラス変数はスーパークラスサブクラスに共有できる
だと思ったのですが全然違いました。どのような順番で動いているのでしょうか?
ご回答よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。