静态内部类
1. 静态内部类只能访问外部类的静态成员 (包括静态变量、静态方法)
2. 创建静态内部类对象时,无需创建外部类对象。
3. 静态内部类可以有静态成员、也可以有非静态成员
4. 外部类访问静态内部类的非静态成员,需要通过静态内部类对象访问;外部类访问静态内部类的静态成员,可以通过静态内部类名访问
5. 若静态内部类的访问控制符被设置为private, 只能被外部类访问,无法被其他类访问
普通内部类
1. 普通内部类可以访问外部类的所有成员 (包括实例变量、实例方法、静态变量、静态方法)
2. 创建普通内部类对象时,需要创建普通内部类对象。
3. 普通内部类只能有非静态成员
4. 外部类访问普通内部类的成员,需要通过普通内部类对象访问;
5. 若普通内部类的访问控制符被设置为private, 只能被外部类访问,无法被其他类访问
总结
1. 静态内部类可以有静态成员,而非静态内部类则不能有静态成员
2. 静态内部类只能够访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员
3. 创建静态内部类对象时,无需创建外部类对象;创建普通内部类对象时,需要创建普通内部类对象。
举例:// 假设类A有静态内部类B和非静态内部类C,创建B和C的区别为:
A a=new A();
A.B b=new A.B();
A.C c=a.new C();