@RitcheeQinG
2020-05-06T07:54:39.000000Z
字数 919
阅读 279
Java
和static修饰的其他内容一样,静态内部类代表它是属于类本身的,而内部类则是属于类的实例的
具体见下面注释里吧
举例
public class OuterClass {
private InnerClass innerClass = new InnerClass();
private InnerClass innerClass2 = new OuterClass().new InnerClass();
private static InnerClass innerClass3 = new OuterClass().new InnerClass();
private static StaticInnerClass staticInnerClass = new StaticInnerClass();
// 和静态变量or方法一样,静态内部类是没法被实例调用的
private StaticInnerClass staticInnerClass2 = new OuterClass.StaticInnerClass();
public void fun1() {
InnerClass innerClass = new InnerClass();
InnerClass innerClass2 = new OuterClass().new InnerClass();
StaticInnerClass staticInnerClass = new StaticInnerClass();
}
public static void fun2() {
// InnerClass innerClass = new InnerClass(); 静态方法里内部类没法直接new出来
// 必须先实例化外部类,再用外部类的实例new出来
InnerClass innerClass2 = new OuterClass().new InnerClass();
StaticInnerClass staticInnerClass = new StaticInnerClass();
}
public class InnerClass {
}
public static class StaticInnerClass {
}
}
这和静态方法里没法调用非静态变量,非静态变量没法赋值静态变量应该是一样的