Re: private and inner class
新城@筑波大学情報です。こんにちは。
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 って書く奴なんで、気にしたことないです。
これは意味がよくわかりません。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735