返回
Java包范围可见性
见解分享
2023-10-01 19:00:54
<font size=5>
<font size=4>
<font size=3>
在Java中,包范围可见性 是指在一个包内,类、接口、枚举等成员之间可以互相访问。这种访问权限比public 低,比protected 高。
类的完全限定名 是指带有完整包名的类,比如String
类是在java.lang
下,它的完全限定名就是java.lang.String
。
类的完全限定名是在编译时确定的。 当编译器遇到一个类的声明时,它会根据类的包名和类名来生成类的完全限定名。
类的完全限定名在运行时也可能会发生改变。 当一个类被加载到JVM中时,JVM会根据类的类加载器来确定类的完全限定名。如果一个类是由应用程序类加载器加载的,那么它的完全限定名就是它在源代码中的完全限定名。如果一个类是由扩展类加载器或系统类加载器加载的,那么它的完全限定名就会加上一个前缀,这个前缀是类加载器的名称。
类的连接过程大致如下:
- 类加载器将类文件加载到JVM中。
- JVM对类文件进行验证,确保类文件符合JVM的规范。
- JVM将类文件中的信息解析成内部数据结构。
- JVM将类中的静态变量分配内存并初始化。
- JVM将类中的方法解析成字节码指令。
类的连接过程是动态的,可以在运行时发生。 这使得Java程序可以非常灵活地加载和卸载类。
包范围可见性 和类的完全限定名 是Java语言中的两个重要概念。理解这两个概念对于理解Java程序的编译和运行过程非常重要。
下面是一些关于包范围可见性和类的完全限定名的常见问题:
- 包范围可见性的访问权限比public低,比protected高。 这意味着在一个包内,类、接口、枚举等成员之间可以互相访问,但是不能被其他包中的类、接口、枚举等成员访问。
- 类的完全限定名是在编译时确定的。 当编译器遇到一个类的声明时,它会根据类的包名和类名来生成类的完全限定名。
- 类的完全限定名在运行时也可能会发生改变。 当一个类被加载到JVM中时,JVM会根据类的类加载器来确定类的完全限定名。如果一个类是由应用程序类加载器加载的,那么它的完全限定名就是它在源代码中的完全限定名。如果一个类是由扩展类加载器或系统类加载器加载的,那么它的完全限定名就会加上一个前缀,这个前缀是类加载器的名称。
- 类的连接过程大致如下:
- 类加载器将类文件加载到JVM中。
- JVM对类文件进行验证,确保类文件符合JVM的规范。
- JVM将类文件中的信息解析成内部数据结构。
- JVM将类中的静态变量分配内存并初始化。
- JVM将类中的方法解析成字节码指令。
理解包范围可见性和类的完全限定名对于理解Java程序的编译和运行过程非常重要。