Java 静态内部类

发布时间:2026/7/21 23:08:55
Java 静态内部类 目录1. 静态内部类2. 获取静态内部类对象3. 静态内部类只能访问外部类的静态成员4. 成员内部类 vs 静态内部类1. 静态内部类静态内部类被static修饰的内部类classOutClass{inta;privateintb;publicstaticintc;publicvoidprint(){System.out.println(OutClass);}//静态内部类staticclassInnerClass{inta;intd;privateinte;publicvoidprint(){System.out.println(InnerClass);}}}2. 获取静态内部类对象静态内部类的创建不需要外部类对象publicstaticvoidmain(String[]args){OutClass.InnerClassinnewOutClass.InnerClass();}3. 静态内部类只能访问外部类的静态成员Error❌:classOutClass{inta10;classInnerClass{System.out.println(a);}}静态成员成员都是在加载类的时候就创建好的 , 非静态成员依赖对象的创建 ,因为静态内部类需要不外部类对象就可以创建没有外部类对象所以只能也访问静态成员。classOutClass{inta1;privateintb2;publicstaticintc3;publicvoidprint(){System.out.println(OutClass);}staticclassInnerClass{intd4;inte5;privateintf6;publicvoidprint(){System.out.println(InnerClass);System.out.println(c);System.out.println(d);System.out.println(e);System.out.println(f);}}}但也不是完全不能访问在静态内部类中创建个外部类对象通过对象.成员名访问。classOutClass{inta1;privateintb2;publicstaticintc3;publicvoidprint(){System.out.println(OutClass);}staticclassInnerClass{publicvoidprint(){System.out.println(InnerClass);OutClassoutnewOutClass();System.out.println(out.a);System.out.println(out.b);System.out.println(c);}}}4. 成员内部类 vs 静态内部类成员内部类静态内部类修饰无 staticstatic属于外部类对象外部类创建out.new Inner()new OutClass.Inner()是否需要外部对象需要不需要能访问外部实例变量✅❌能访问外部静态变量✅✅能定义 static 成员❌常量除外✅