I cannot easily find a way around your problem, if all you want is 
protection of an instance variable you could create access method for 
that variable (you could declare those as private if you want) and then 
have all the access controls you could desire in those access methods. 
There is, of cause, no way to prevent that those access methods are 
overloaded in the child class.

class A
   def var
     @var
   end

   def var= (v)
     # control here
     @var = v
   end
end

there is, tho, no way to prevent a child from declaring it's own var=() 
method.

-- 
dc -e 
4dd*od3*dddn1-89danrn10-dan3+ann6*dan*2*an13dn1+dn2-dn3+5*ddan2/9+an13nap