各种内部类的成员组成、加载机制以及访问权限

内部类的成员组成以及加载机制

本文中外围类为包裹着所述内部类的类,外部类为不包含所述内部类且与外围类平级的类

成员内部类

成员组成

成员内部类除了不能定义静态方法、静态成员、静态代码块,其他与普通类没有查别。

加载机制

  • 成员内部类由于无静态成员,所以无法通过触发静态成员加载而加载,只能通过创建成员内部类而加载。
  • 创建成员内部类的前提是实例化其所在的外围类,因此,仅仅创建外围类并不能触发成员内部类加载
  • 成员内部类加载的过程为:创建外围类-->实例化外围类--->创建成员内部类--->成员内部类加载

静态内部类

成员组成

静态内部类与成员内部类的组成相比,仅仅是多了static修饰词,但是加载与访问权限查别较大,详细见后两节。

加载机制

  • 静态内部类的加载独立于其所在外围类
  • 外围类加载不会触发静态内部类加载
  • 静态内部类加载不会触发外围类加载

局部内部类

成员组成

局部内部类与成员内部类的区别仅仅为所处位置以及无权限修饰符,因此成员组织与成员内部类一致,无静态方法、静态成员、静态代码块。

加载机制

  • 在局部内所在的方法内创建局部内部类。

各个类之间的访问权限

成员内部类

  • 成员内部类-->外围类:无条件访问所有成员,当有同名方法或者成员变量时,需要通过类名点的方式
  • 成员内部类-->外部类:根据外部类的访问权限,若权限允许,则直接创建对象即可访问
  • 外围类-->成员内部类:创建内部类对象,然后进行访问
  • 外部类-->成员内部类:根据内部类的权限访问,若权限允许,则创建并实例化外围类,然后创建成员内部类对象,进行访问

静态内部类

  • 静态内部类与外围类:两者的静态成员都可以互相直接访问,但是其他普通变量都需要通过创建对象进行访问
  • 静态内部类与外部类:两者都需要根据对方的权限访问,若权限允许,则创建对象后进行访问

局部内部类

  • 外部类与外围类都无法访问局部内部类
  • 局部内部类创建外部类对象后可以对外部类进行访问
  • 局部内部类无条件访问外围类
posted @ 2021-04-19 14:06  瓜铺  阅读(285)  评论(0)    收藏  举报