对此总是多少有点迷惑——private关键字作用在内部类(假设为A)的成员上时,对于包含该内部类(A)的类(假设为B)来说形同虚设,如果还有一个类(假设为C)包含这个包含类(B)时,那么类A中的private对于C同样形同虚设。
下面的代码证明了这一点。个人理解是:内部类对于 包含它的类 来说毫无隐私——此处包含至少嵌套了一级。
下面的代码证明了这一点。个人理解是:内部类对于 包含它的类 来说毫无隐私——此处包含至少嵌套了一级。
class FirstLevel{
private class SecondLevel{
private int i=10;
private void say(){
System.out.println("private SecondLevel.say()");
}
private class ThirdLevel{
private int i=12;
private void say(){
System.out.println("private ThirdLevel.say()");
}
}
}
void haha(){
System.out.println("FirstLevel.haha() BEGIN:");
SecondLevel secondLevel=new SecondLevel();
SecondLevel.ThirdLevel thirdLevel=secondLevel.new ThirdLevel();
System.out.println("SecondLevel's private i"+secondLevel.i);
secondLevel.say();
System.out.println("ThirdLevel's private i :"+thirdLevel.i);
secondLevel.say();
System.out.println("FirstLevel.haha() END.\n");
}
public static void main(String[] arguments){
FirstLevel firstLevel=new FirstLevel();
firstLevel.haha();
FirstLevel.SecondLevel secondLevel=firstLevel.new SecondLevel();
secondLevel.say();
FirstLevel.SecondLevel.ThirdLevel thirdLevel=secondLevel.new ThirdLevel();
thirdLevel.say();
}
}