Javaに、アクセス修飾子ってあるじゃん。デフォルトも含めて4つだけですけど、これは合理的ですか? 良くも悪くも、現状はこうなってます。 (厳しい) 1.private 2.デフォルト(無) 3.protected 4.public (甘い) 私は、privateとデフォルトの間に大きな開きを感じるのです。この間に修飾子を新設すべきかと思うのですが、ドーかしら? 名前を付けるならfamilyです。privateなら自分だけですが、それを少しだけ広げて、一つ屋根の下に暮らす親密な家族ならアクセスを許そうとする感じです。 家族とは、同パッケージ内のサブクラスです。 カプセル化とか、beanってあるじゃん。フィールドにprivateを付けて直接のアクセスを制限し、setterとgetterの手続きを経由しようとするプログラミング手法です。setterとgetterにpublicを付けることが多いですが、もう少しアクセスの幅を狭めたいこともあると思います。デフォルトでも甘すぎたりすると思うのですが、ドーかしら? setterとgetterにfamilyを付けます。そうすると、スーパークラスのフィールドにアクセス出来る範囲を家族に絞り込んで、誤動作を防ぐのに効果的かと思いました。setterとgetterにpublicなんか付けちゃうと、誰がイタズラに手続きしたのかワケ分からなくなります。familyだと、誤動作しても犯人が家族の誰かですから、容疑者を絞り込めます。 図が見えますかね。 familyを新設すると、○の数が連続的になります。これが何かに役立つかどうかは横に置いといて、体系として自然で美しいと思うのだが、ドーかしら? 繰り返しになりますが、現状だとprivateとデフォルトの間に飛躍があると思う。 逆に言うと、protectedって需要少ないのでは?familyが無くても現状で何とかなってるように、protectedが消えて無くなっても何とかなるよね?protectedって必要?
↧