普通内部类
特点
- 实例化依赖于外部类
- 可以定义成员变量,成员方法,成员类
- 不能定义静态变量,静态方法,静态类
- 可以访问外部类的所有变量和方法
代码
public class MainTest {
public class InnerClass {
}
}
静态内部类
特点
- 实例化不依赖外部类
- 可以定义所有变量,所有方法,所有类
- 可以访问外部类的静态变量和静态方法
- 不能访问外部类的成员变量和成员方法
代码
public class MainTest {
public static class InnerClass {
}
}
匿名内部类
特点
- 可以定义成员变量,成员方法,成员类
- 不能定义静态变量,静态方法,静态类
- 可以访问外部类的所有变量和方法
代码
public class MainTest {
public void aaa() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
}
});
}
}
局部内部类
特点
- 可以定义成员变量,成员方法,成员类
- 不能定义静态变量,静态方法,静态类
- 可以访问外部类的所有变量和方法
代码
public class MainTest {
public void aaa() {
class InnerClass {
}
}
}