[关闭]
@RitcheeQinG 2020-05-06T07:54:39.000000Z 字数 919 阅读 279

Java内部类和静态内部类初始化层面的区别

Java


和static修饰的其他内容一样,静态内部类代表它是属于类本身的,而内部类则是属于类的实例的
具体见下面注释里吧
举例

  1. public class OuterClass {
  2. private InnerClass innerClass = new InnerClass();
  3. private InnerClass innerClass2 = new OuterClass().new InnerClass();
  4. private static InnerClass innerClass3 = new OuterClass().new InnerClass();
  5. private static StaticInnerClass staticInnerClass = new StaticInnerClass();
  6. // 和静态变量or方法一样,静态内部类是没法被实例调用的
  7. private StaticInnerClass staticInnerClass2 = new OuterClass.StaticInnerClass();
  8. public void fun1() {
  9. InnerClass innerClass = new InnerClass();
  10. InnerClass innerClass2 = new OuterClass().new InnerClass();
  11. StaticInnerClass staticInnerClass = new StaticInnerClass();
  12. }
  13. public static void fun2() {
  14. // InnerClass innerClass = new InnerClass(); 静态方法里内部类没法直接new出来
  15. // 必须先实例化外部类,再用外部类的实例new出来
  16. InnerClass innerClass2 = new OuterClass().new InnerClass();
  17. StaticInnerClass staticInnerClass = new StaticInnerClass();
  18. }
  19. public class InnerClass {
  20. }
  21. public static class StaticInnerClass {
  22. }
  23. }

这和静态方法里没法调用非静态变量,非静态变量没法赋值静态变量应该是一样的

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注