包
包
-
Java 定义了一种名字空间,称之为包:
package
。一个类总是属于某个包,类名(比如Person
)只是一个简写,真正的完整类名是包名.类名
。使用package
来解决名字冲突。 -
包没有父子关系。java.util和java.util.zip是不同的包,两者没有任何继承关系。
包的作用域
-
不用
public
、protected
、private
修饰的字段和方法就是包作用域。 -
位于同一个包的类,可以访问包作用域的字段和方法。
编译器如何查找类名
-
如果是完整类名,就直接根据完整类名查找这个
class
; -
如果是简单类名,按下面的顺序依次查找:
- 查找当前
package
是否存在这个class
; - 查找
import
的包是否包含这个class
; - 查找
java.lang
包是否包含这个class
。
- 查找当前
-
编译器会自动导入当前
package
的其他class
和java.lang.*
自动导入的是java.lang包,但类似java.lang.reflect这些包仍需要手动导入。