解释一下java中内部类,并用代码举例说明
时间: 2024-09-08 15:03:28 浏览: 48
在Java中,内部类是指定义在一个类体内部的类,它可以访问外部类的所有成员变量和方法,包括私有成员。内部类主要有三种类型:静态内部类、匿名内部类和成员内部类(又称为非静态内部类)。以下是每个类型的简单例子:
1. 静态内部类(Static Inner Class):
```java
public class OuterClass {
// 外部类的成员
public static int outerVar = 10;
static class StaticInnerClass {
private int innerVar = 5;
void display() {
System.out.println("Static Inner Class: " + outerVar + ", " + innerVar);
}
}
public static void main(String[] args) {
OuterClass.StaticInnerClass innerObj = new OuterClass.StaticInnerClass();
innerObj.display(); // 访问内部类的方法
}
}
```
2. 匿名内部类(Anonymous Class):
通常用于简化事件监听或创建单次使用的简单对象,例如`Runnable`或`Comparator`接口的实现:
```java
public class Main {
public void runTask(Runnable task) {
task.run(); // 这里的task就是一个匿名内部类实例
}
public static void main(String[] args) {
Main main = new Main();
main.runTask(new Runnable() {
@Override
public void run() {
System.out.println("Anonymous Task");
}
});
}
}
```
3. 成员内部类(Member Inner Class):
这是最常见的内部类形式,可以访问外部类的实例变量和方法,比如:
```java
public class OuterClass {
private String outerVar = "Hello";
class MemberInnerClass {
void printOuter() {
System.out.println("Member Inner Class: " + outerVar);
}
}
public void createInner() {
MemberInnerClass inner = new MemberInnerClass();
inner.printOuter();
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
outer.createInner();
}
}
```
阅读全文