外部类怎么访问内部类
时间: 2024-09-28 09:10:06 浏览: 31
深入理解Java?内部类
在Java中,外部类(也称为外部作用域或外部类定义)可以直接访问内部类(也称为嵌套类或成员类),但有一些条件:
1. **静态内部类**:如果内部类声明为`static`,那么你可以直接使用它的名字,无需创建外部类的实例。例如:
```java
public class OuterClass {
static class InnerClass {
// ...
}
}
// 使用时:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
```
2. **非静态内部类**:对于非静态内部类,你必须先创建外部类的实例才能访问内部类。这意味着你需要先创建`OuterClass`的实例,然后从这个实例上调用内部类的方法或变量:
```java
public class OuterClass {
class InnerClass {
// ...
}
public void doSomething() {
InnerClass inner = this.new InnerClass(); // "this"指代外部类的实例
// ...
}
}
// 使用时:
OuterClass outer = new OuterClass();
outer.doSomething();
```
3. **内部类访问外部类成员**:反之,内部类也可以访问外部类的私有、默认(package-private)和受保护(protected)成员。
记住,如果你试图访问内部类的实例变量(非静态数据成员),通常在内部类的方法中,你可以直接使用`this`关键字,因为它们被隐式地包装在一个匿名内部类里,该内部类引用了外部类的当前实例。
阅读全文