class C
 def initialize
  @n = 50
 end
 def n
  return @n
 end
 def n=(n)
  @n += n - self.n
 end
end
c = C.new
b = c
b.n = 20
p c.n

これを実行すると20と表示されます

c = 50
b = c
b = 20
p c

これは50と表示されます
ここの辺り、それぞれの結果に差が出る理由などが漠然としか理解できていないのですが
上手く解説してるサイト等ご存知でしたら教えてください