返回

Java包范围可见性

见解分享

<font size=5>

<font size=4>

<font size=3>

在Java中,包范围可见性 是指在一个包内,类、接口、枚举等成员之间可以互相访问。这种访问权限比public 低,比protected 高。

类的完全限定名 是指带有完整包名的类,比如String类是在java.lang下,它的完全限定名就是java.lang.String

类的完全限定名是在编译时确定的。 当编译器遇到一个类的声明时,它会根据类的包名和类名来生成类的完全限定名。

类的完全限定名在运行时也可能会发生改变。 当一个类被加载到JVM中时,JVM会根据类的类加载器来确定类的完全限定名。如果一个类是由应用程序类加载器加载的,那么它的完全限定名就是它在源代码中的完全限定名。如果一个类是由扩展类加载器或系统类加载器加载的,那么它的完全限定名就会加上一个前缀,这个前缀是类加载器的名称。

类的连接过程大致如下:

  1. 类加载器将类文件加载到JVM中。
  2. JVM对类文件进行验证,确保类文件符合JVM的规范。
  3. JVM将类文件中的信息解析成内部数据结构。
  4. JVM将类中的静态变量分配内存并初始化。
  5. JVM将类中的方法解析成字节码指令。

类的连接过程是动态的,可以在运行时发生。 这使得Java程序可以非常灵活地加载和卸载类。

包范围可见性类的完全限定名 是Java语言中的两个重要概念。理解这两个概念对于理解Java程序的编译和运行过程非常重要。

下面是一些关于包范围可见性和类的完全限定名的常见问题:

  • 包范围可见性的访问权限比public低,比protected高。 这意味着在一个包内,类、接口、枚举等成员之间可以互相访问,但是不能被其他包中的类、接口、枚举等成员访问。
  • 类的完全限定名是在编译时确定的。 当编译器遇到一个类的声明时,它会根据类的包名和类名来生成类的完全限定名。
  • 类的完全限定名在运行时也可能会发生改变。 当一个类被加载到JVM中时,JVM会根据类的类加载器来确定类的完全限定名。如果一个类是由应用程序类加载器加载的,那么它的完全限定名就是它在源代码中的完全限定名。如果一个类是由扩展类加载器或系统类加载器加载的,那么它的完全限定名就会加上一个前缀,这个前缀是类加载器的名称。
  • 类的连接过程大致如下:
    1. 类加载器将类文件加载到JVM中。
    2. JVM对类文件进行验证,确保类文件符合JVM的规范。
    3. JVM将类文件中的信息解析成内部数据结构。
    4. JVM将类中的静态变量分配内存并初始化。
    5. JVM将类中的方法解析成字节码指令。

理解包范围可见性和类的完全限定名对于理解Java程序的编译和运行过程非常重要。