Class variables are shared in the class hierarchy. This can result in surprising behavior.
class A
@@variable = :x
def self.variable
@@variable
end
end
class B < A
@@variable = :y
end
A.variable # :y
Classes are objects, so instance variables can be used to provide state that is specific to each class.
class A
@variable = :x
def self.variable
@variable
end
end
class B < A
@variable = :y
end
A.variable # :x