内部类成员可以直接访问外部类的私有数据,但外部类不能访问内部类的实现细节,例如内部类的成员变量
外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例等
java不允许在非静态内部类里定义静态成员
静态内部类不能访问外部类的实例成员,只能访问外部类的类成员
不要在外部类的静态成员中使用非静态内部类
如果希望在外部类以外的地方访问内部类,则内部类不能使用private访问控制权限,private修饰的内部类只能在外部类内部使用:
省略访问控制符的内部类,只能被与外部类处于同一个包中的其他类所访问
使用protected修饰的内部类,可被与外部类处于同一个包中的其他类和外部类的子类所访问
使用public修饰的内部类,可以在任何地方被访问
在外部类以外的地方创建非静态内部类实例必须使用外部类实例和new来调用非静态内部类的构造器,即
Out.In in = new Out().new In();