module M def foo puts "M#foo" end end module M2 def foo puts "M#foo" end end class A def foo puts "A#foo" end include M include M2 end class B < A include M def foo puts "B#foo" end end print B.ancestors
継承の順番を理解するために作成してみたのですが、出力結果が
[B, A, M2, M, Object...]
になりました(...は省略)。これはなぜなのでしょうか?
includeしたモジュールはそのクラスのあとに継承されると思いますので、
Bを参照、BにあるMを参照
Bクラスの参照が終わったので、スーパークラスのAクラスをみる
Aを参照、AにあるMを参照、AにあるM2を参照
なので[B, M, A, M, M2]になると思ってました。
なぜ[B, A, M2, M, Object...]になるのかわかりません。
継承についてのご助言よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。