新城@筑波大学情報です。こんにちは。

In article <3993587news.pl@rananim.ie.u-ryukyu.ac.jp>
        kono@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> > Java の inner class で private になっているフィールドに外か
> > らアクセスできてしまいます。これは、どういう理屈なのでしょう
> > か。たとえば、こんなプログラムが動きます。
> http://mindprod.com/jgloss/scope.html
> によると、それで正しいようですね。

情報ありがとうございます。この表ですね。

------------------------------------------------------------
Permitted class scopes
------------------------------------------------------------
Type                    public  pro-    default private
                                tected
------------------------------------------------------------
standalone class        yes     no      yes     no
top level class         no      no      yes     no
inner class             yes     yes     yes     yes
static inner class      yes     yes     yes     yes
anonymous class         no      no      no      no
local class             no      no      no      no
------------------------------------------------------------

> inner class だと実装が見え見えなので隠す motivation は
> 低いとは思う。

それは同意します。ですが、Pascal などのブロック構造で、外側
から内側の関数とか変数をアクセスするのはおかしいと思いますよ
ね。その感覚とJava の inner class の感覚が合わないわけでする
それで、inner class を設計した時に、何か議論があったのかが気
になったわけです。どうしても、こういうことがやりたいとか。な
にも無ければ、Pascal に合わせてもよかったわけで。

Pascal がそもそもおかしいという話はあります。ブロック構造で
そこに書いてあるのが目に見えるのにアクセスできないとか。変数
名や関数名の名前が衝突しないという話はあるので、名前さえ衝突
しなければアクセスできてもよいという考え方はあるのでしょう。
でも、Pascal でそれやったら、モジュール性は終ってしまいます。

> 僕は、全部、public って書く奴なんで、気にしたことないです。

これは意味がよくわかりません。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\