静态内部类和内部类的区别
时间: 2023-08-10 08:45:17 浏览: 95
Java 中有两种内部类:内部类和静态内部类,它们之间有以下区别:
1. 静态内部类可以拥有静态变量和静态方法,而非静态内部类不能拥有静态变量和静态方法。
2. 静态内部类的实例化不依赖于外部类的实例,而非静态内部类必须依赖于外部类的实例才能实例化。
3. 静态内部类可以直接访问外部类的静态成员,而非静态内部类只能直接访问外部类的非静态成员。
示例代码如下:
```java
public class OuterClass {
private static int x = 10;
private int y = 20;
public void outerMethod() {
InnerClass inner = new InnerClass();
inner.innerMethod();
}
static class StaticInnerClass {
private static int z = 30;
public static void staticInnerMethod() {
System.out.println("Static Inner Method: " + z);
System.out.println("Static Outer Variable: " + x);
}
}
class InnerClass {
public void innerMethod() {
System.out.println("Inner Method: " + y);
System.out.println("Outer Variable: " + x);
}
}
}
```
在这个示例中,`StaticInnerClass` 是静态内部类,`InnerClass` 是非静态内部类。在 `StaticInnerClass` 中,我们可以定义静态变量 `z`,并且可以直接访问外部类中的静态变量 `x`。而在 `InnerClass` 中,我们只能直接访问外部类中的非静态变量 `y`,不能直接访问外部类中的静态变量 `x`。
阅读全文