>>832
 finalでないデータメンバーは基本private。
コードを直すときprivateメンバーは、クラスのメソッド以外からは、
参照できないので、クラスのメソッドだけ確認すればよく手直ししやすい
ってのは初心者向けによく言われる話。
 オブジェクト指向の観点で言えば、オーバーライドが関係する。
データメンバーは、オーバーライド不可能なんで、スーパークラスの
データメンバーに直接アクセスされると、サブクラスはそのアクセスを
検知する手段が無くなる。だから、ただデータを設定するだけでも、
データはprivateにしてメソッド経由でアクセスさせるようになっている。

protectedは、Java以外の言語であれば、サブクラスがスーパークラスを独占して
操作するための手段。サブクラスから見れば、他のクラスが自分の
スーパークラスに、protected操作をしないことを保証できる。
残念ながらJavaだとpackageレベルではpublic同様なのでその効果は薄いが。