1. 概念
定义在类中的类,称为内部类,内部类与外部类处于同一个级别,在编译时会根据外部类名称生成两个class
文件,分别是xx.class
与xx1.class
,在运行时不会随着执行完毕就被销毁
- 使用内部类的原因:
- 内部类可以对同一个包中的其它类隐藏
- 内部类方法可以访问定义于这个类中的数据,包括私有。
public class Outer {
private int id = 10;
class Inner {
int id = 20;
public void fun() {
System.out.println("内部类显示外部类id" + Outer.this.id);
}
}
public static void main(String[] args) {
Outer a = new Outer();
System.out.println(a.id);
// 通过外部类对象来创建内部类对象
Outer.Inner inner = a.new Inner();
inner.fun();
}
}
2. 匿名内部类
只想创建这个类的对象,不需要为类定义名字。由于匿名内部类没有类名,所以它就没有构造器,但是可以提供一个对象初始化块。
3. 静态内部类
内部类用static声明,只是为了隐藏在一个类中的原因,并不需要有外部类的引用。静态内部类与常规内部类不同,可以有静态字段与方法。