创建一个静态内部类,成员内部类,局部内部类
时间: 2023-10-16 07:10:40 浏览: 78
好的,我来为您解答。
1. 静态内部类:
```java
public class OuterClass {
private static int outerVar = 1;
static class StaticInnerClass {
private int innerVar = 2;
public void printVars() {
System.out.println("outerVar: " + outerVar + ", innerVar: " + innerVar);
}
}
}
```
在上述代码中,`StaticInnerClass` 是一个静态内部类,它可以直接访问外部类的静态成员变量 `outerVar`,并且可以定义自己的成员变量 `innerVar`。可以通过以下方式创建静态内部类的实例:
```java
OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
inner.printVars(); // 输出: outerVar: 1, innerVar: 2
```
2. 成员内部类:
```java
public class OuterClass {
private int outerVar = 1;
class InnerClass {
private int innerVar = 2;
public void printVars() {
System.out.println("outerVar: " + outerVar + ", innerVar: " + innerVar);
}
}
}
```
在上述代码中,`InnerClass` 是一个成员内部类,它需要通过外部类的实例来创建。与静态内部类不同的是,成员内部类不能定义静态成员变量,因为它的生命周期与外部类对象的生命周期相同。可以通过以下方式创建成员内部类的实例:
```java
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.printVars(); // 输出: outerVar: 1, innerVar: 2
```
3. 局部内部类:
```java
public class OuterClass {
private int outerVar = 1;
public void printVars(final int localVar) {
class LocalInnerClass {
private int innerVar = 2;
public void printAllVars() {
System.out.println("outerVar: " + outerVar + ", localVar: " + localVar + ", innerVar: " + innerVar);
}
}
LocalInnerClass inner = new LocalInnerClass();
inner.printAllVars();
}
}
```
在上述代码中,`LocalInnerClass` 是一个局部内部类,它定义在方法 `printVars` 中,所以它只能在该方法中使用。局部内部类可以访问外部类的成员变量和方法参数,但是这些变量必须被声明为 `final`。可以通过以下方式创建局部内部类的实例:
```java
OuterClass outer = new OuterClass();
outer.printVars(3); // 输出: outerVar: 1, localVar: 3, innerVar: 2
```
希望这个回答能够帮到您!
阅读全文