1.创建普通内部类对象需要先创建外部类对象,创建静态内部类对象可以直接创建:
OutClass.InnerClass obj = new OutClass().new InnerClass() //普通内部类
OutClass.InnerClass obj = new OutClass.InnerClass() //静态内部类
2.普通内部类中不能有静态成员(static 或者 enum),静态内部类可以。
3.普通内部类可以引用外部类的静态或非静态属性和方法,静态内部类只能引用外部类的静态属性和方法。
4.内部类加载时,会先加载外部类。静态内部类加载时不会引起外部类的加载。
public class OutClass {
private int a;
{
System.out.println("Out");
}
class InnerClass {
{
System.out.println("Inner");
}
}
static class StaticInnerClass{
{
System.out.println("Static Inner");
}
}
}
结果如下:
OutClass.InnerClass in = new OutClass().new InnerClass(); //输出 Out Inner
OutClass.StaticInnerClass in = new OutClass.StaticInnerClass(); //输出 Static Inner