java内部类声明static成员时必须把内部类声明static吗
时间: 2023-06-11 14:08:59 浏览: 48
如果你在内部类中声明了一个静态成员,那么内部类本身必须是静态的。这是因为非静态内部类必须依赖于外部类的实例,而静态成员不依赖于任何实例。如果你想在内部类中声明静态成员,可以将内部类声明为静态类。
例如,下面的代码演示了如何在静态内部类中声明静态成员:
```java
public class OuterClass {
private static int outerStaticInt = 1;
private int outerInt = 2;
public static class InnerClass {
private static int innerStaticInt = 3;
private int innerInt = 4;
public void printValues() {
System.out.println("outerStaticInt: " + outerStaticInt);
System.out.println("outerInt: " + new OuterClass().outerInt);
System.out.println("innerStaticInt: " + innerStaticInt);
System.out.println("innerInt: " + innerInt);
}
}
}
```
在这个例子中,`InnerClass` 是一个静态内部类,它声明了一个静态成员 `innerStaticInt` 和一个非静态成员 `innerInt`。`OuterClass` 是外部类,它声明了一个静态成员 `outerStaticInt` 和一个非静态成员 `outerInt`。我们可以在静态内部类中访问外部类的静态成员,但不能直接访问外部类的非静态成员,需要通过外部类的实例来访问。