论坛首页 入门技术论坛

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

浏览 1149 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-02  
对此总是多少有点迷惑——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();
	}
}
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics