您的位置:首页 > 其它

类可以访问它的内部类(和内部类的内部类)的所有成员

2008-12-02 16:59 225 查看
对此总是多少有点迷惑——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. }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: