包
-
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這些包仍需要手動匯入。