Why class variables are shared by subclasses? class A @@cv = 3 def A.ppp p @@cv end end A.ppp class B < A def B.t @@cv = 5 end end A.ppp B.t A.ppp class C < A @@cv = 7 end A.ppp B.ppp C.ppp Produces 3 3 5 7 7 7