7. 継承があった場合 class Base def self.civar= val @civar = val end def self.civar @civar end end class Subclass < Base end Base.civar = 1 p Subclass.civar #=> nil Subclass.civar = 2 p Base.civar #=> 1 この行で 1 と表示させたいときは、 後述の class_attribute を利用する ① : Subclass.civar の呼び出し ② : 存在しないので、 Base.civar の呼び出し ③ : インスタンス変数 @civar の 値を返す。このとき self は Subclass のため @civar は未定義 サブクラスはスーパークラスと異なるオブジェクトのため、 同じ名前のインスタンス変数でも異なるオブジェクトを参照する