在提供的示例中,InnerClass1是带有私有变量val的私有类。但是InnerClass2的fun()函数可以打印该值,而无需InnerClass1的任何公共方法的支持。那么,为什么私有访问修饰符在这里不起作用?
public class Demo {
private class InnerClass1 {
private int val1 =2;
}
private class InnerClass2 {
public void fun() {
InnerClass1 clz1=new InnerClass1();
System.out.println(clz1.val1);
}
}
public static void main(String args[]) {
Demo demo=new Demo();
InnerClass2 clz2=demo.new InnerClass2();
clz2.fun();
}
}
我希望在System.out.println(clz1.val1)行中出现编译错误,因为val1具有私有访问修饰符