N1ce2cu發表於2024-07-13

  • Java 定義了一種名字空間,稱之為包:package。一個類總是屬於某個包,類名(比如Person)只是一個簡寫,真正的完整類名是包名.類名。使用package來解決名字衝突。

  • 包沒有父子關係。java.util和java.util.zip是不同的包,兩者沒有任何繼承關係。

包的作用域

  • 不用publicprotectedprivate修飾的欄位和方法就是包作用域。

  • 位於同一個包的類,可以訪問包作用域的欄位和方法。

編譯器如何查詢類名

  • 如果是完整類名,就直接根據完整類名查詢這個class

  • 如果是簡單類名,按下面的順序依次查詢:

    • 查詢當前package是否存在這個class
    • 查詢import的包是否包含這個class
    • 查詢java.lang包是否包含這個class
  • 編譯器會自動匯入當前package的其他classjava.lang.*

自動匯入的是java.lang包,但類似java.lang.reflect這些包仍需要手動匯入。

相關文章