对此总是多少有点迷惑——private关键字作用在内部类(假设为A)的成员上时,对于包含该内部类(A)的类(假设为B)来说形同虚设,如果还有一个类(假设为C)包含这个包含类(B)时,那么类A中的private对于C同样形同虚设。
下面的代码证明了这一点。个人理解是:内部类对于 包含它的类 来说毫无隐私——此处包含至少嵌套了一级。
下面的代码证明了这一点。个人理解是:内部类对于 包含它的类 来说毫无隐私——此处包含至少嵌套了一级。
- 1. class FirstLevel{
- 2.
- 3. private class SecondLevel{
- 4. private int i=10;
- 5. private void say(){
- 6. System.out.println("private SecondLevel.say()");
- 7. }
- 8. private class ThirdLevel{
- 9. private int i=12;
- 10. private void say(){
- 11. System.out.println("private ThirdLevel.say()");
- 12. }
- 13. }
- 14. }
- 15.
- 16. void haha(){
- 17. System.out.println("FirstLevel.haha() BEGIN:");
- 18. SecondLevel secondLevel=new SecondLevel();
- 19. SecondLevel.ThirdLevel thirdLevel=secondLevel.new ThirdLevel();
- 20. System.out.println("SecondLevel's private i"+secondLevel.i);
- 21. secondLevel.say();
- 22. System.out.println("ThirdLevel's private i :"+thirdLevel.i);
- 23. secondLevel.say();
- 24. System.out.println("FirstLevel.haha() END./n");
- 25. }
- 26.
- 27. public static void main(String[] arguments){
- 28. FirstLevel firstLevel=new FirstLevel();
- 29. firstLevel.haha();
- 30. FirstLevel.SecondLevel secondLevel=firstLevel.new SecondLevel();
- 31. secondLevel.say();
- 32. FirstLevel.SecondLevel.ThirdLevel thirdLevel=secondLevel.new ThirdLevel();
- 33. thirdLevel.say();
- 34. }
- 35. }