内部类的作用:
- 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一包中的其他类访问该类。
- 内部类成员可以直接访问外部类的私有数据,因为内部类被当成外部类成员,同一个类的成员之间可以相互访问。
- 匿名内部类适合用于创建仅需一次使用的类。
内部类分:静态内部类、非静态内部类、局部内部类和匿名内部类。
其中静态内部类和非静态内部类称为成员内部类,静态内部类的使用最简单,推荐优先考虑。
1 内部类编译后的class文件格式?
成员内部类编译后的class文件总是OutterClass$InnerClass.class这种形式
局部内部类编译后的class文件格式是OutterClass$NInnerClass.class,N表示InnerClass类的个数
2 非静态内部类对象和外部类对象的关系?
外部类对象存在,非静态内部类对象不一定存在;非静态内部类对象存在,外部类对象一定存在
3 成员内部类变量的定义和初始化
OutterClass.InnerClass varName;
// 非静态内部类的初始化
OutterInstance.new InnerConstructor();
//静态内部类的初始化
new OutterClass.InnerConstructor();