private and inner class
新城@筑波大学情報です。こんにちは。
Java の inner class で private になっているフィールドに外か
らアクセスできてしまいます。これは、どういう理屈なのでしょう
か。たとえば、こんなプログラムが動きます。
------------------------------------------------------------
class MyTest {
class M2 {
private int x;
private int y;
M2(){
x=2;
y=5;
}
}
M2 m;
void setM2x(int x){
m.x = x;
}
MyTest(){
m = new M2();
}
public String toString(){
return "x = " + m.x + ", " + "y = " + m.y;
}
}
class Main {
public static void main(String args[]){
MyTest m = new MyTest();
m.setM2x( 100);
System.out.println(m);
}
}
------------------------------------------------------------
試したコンパイラは、javac 1.5.0_07 です。
普通のブロック構造を考えても、内側にアクセスしているみたいで、
納得いきません。何か説明があればお願いします。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
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