各种内部类的成员组成、加载机制以及访问权限
内部类的成员组成以及加载机制
本文中外围类为包裹着所述内部类的类,外部类为不包含所述内部类且与外围类平级的类
成员内部类
成员组成
成员内部类除了不能定义静态方法、静态成员、静态代码块,其他与普通类没有查别。
加载机制
- 成员内部类由于无静态成员,所以无法通过触发静态成员加载而加载,只能通过创建成员内部类而加载。
- 创建成员内部类的前提是实例化其所在的外围类,因此,仅仅创建外围类并不能触发成员内部类加载
- 成员内部类加载的过程为:创建外围类-->实例化外围类--->创建成员内部类--->成员内部类加载
静态内部类
成员组成
静态内部类与成员内部类的组成相比,仅仅是多了static修饰词,但是加载与访问权限查别较大,详细见后两节。
加载机制
- 静态内部类的加载独立于其所在外围类
- 外围类加载不会触发静态内部类加载
- 静态内部类加载不会触发外围类加载
局部内部类
成员组成
局部内部类与成员内部类的区别仅仅为所处位置以及无权限修饰符,因此成员组织与成员内部类一致,无静态方法、静态成员、静态代码块。
加载机制
- 在局部内所在的方法内创建局部内部类。
各个类之间的访问权限

成员内部类
- 成员内部类-->外围类:无条件访问所有成员,当有同名方法或者成员变量时,需要通过类名点的方式
- 成员内部类-->外部类:根据外部类的访问权限,若权限允许,则直接创建对象即可访问
- 外围类-->成员内部类:创建内部类对象,然后进行访问
- 外部类-->成员内部类:根据内部类的权限访问,若权限允许,则创建并实例化外围类,然后创建成员内部类对象,进行访问
静态内部类
- 静态内部类与外围类:两者的静态成员都可以互相直接访问,但是其他普通变量都需要通过创建对象进行访问
- 静态内部类与外部类:两者都需要根据对方的权限访问,若权限允许,则创建对象后进行访问
局部内部类
- 外部类与外围类都无法访问局部内部类
- 局部内部类创建外部类对象后可以对外部类进行访问
- 局部内部类无条件访问外围类
浙公网安备 33010602011771号