Ruby1.8のクラス変数は継承されてしまうようです(1.9ではされないように変更)。
一般的に(?)クラス変数という言葉から類推される挙動を求める場合は、クラスインスタンス変数を使います。「クラスのインスタンス変数」と「クラスインスタンス変数」は別物であることに注意。ややこしー。
逆にクラスインスタンス変数を使うと継承で初期化されないというデメリットがある。その場合は次のようにして初期化することができる。
class C @var = 1 class << self attr_accessor :var def inherited(klass) klass.var ||= var super end end def disp self.class.var end end class D < C end p D.var # => 1参考