由同一類加載器加載的屬於相同包的類組成了運行時包。
決定兩個類是不是屬於同一個運行時包,不僅要看它們的包名是否相同,還要看定義類加載器是否相同。
只有屬於同一運行時包的類才能互相訪問包可見(即默認訪問級別)的類和類成員。這樣的限制能避免用戶自定義的類冒充核心類庫的類,去訪問核心類庫的包可見成員。
假設用戶自己定義了一個類java.lang,Spy,並由用戶自定義的類加載器加載,由於java.lang.Spy和核心類庫java.lang.*由不同的加載器加載,它們屬於不同的運行時包,所以java.lang.Spy和核心類庫java.lang.*由不同的加載器加載,它們屬於不同的運行時包,所以java.lang.Spy不能訪問核心類庫java.lang包中的包可見成員。