A#fooがprotectedで、a1、a2がAのインスタンスだとすると、

a1.foo #=> エラー
a1.instance_eval { foo; self.foo; a1.foo; a2.foo } #=> いずれも可能

fooは、A(とそのサブクラス)のインスタンスのコンテキストで使える。
privateと比較すると、selfに加えて、自クラス・サブクラスの他の
インスタンスのfooが呼べるってこと。

比較判定で他の兄弟インスタンスの属性を参照するメソッドなどがprotectedになりうる。

Javaのprotectedは、コンテキスト関係なく、サブクラスのインスタンスに
対して使用できるかどうかを示す。