javac Pack.java tools/Hammer.java tools/Wrench.java java Pack
access by | private | "package" | protected | public | |
---|---|---|---|---|---|
the class itself | yes | yes | yes | yes | |
a subclass in same package | no | yes | yes | yes | |
non-subclass in same package | no | yes | yes | yes | |
a subclass in other package | no | no | yes | yes | |
non-subclass in other package | no | no | no | yes |
Example
javac one/Main.java another/Unrelated.java java one.Main
Classes in the same package can be in different directories.
dir1/dir2/A/B/C.class dir3/A/B/D.class java -classpath dir1/dir2:dir3 ...
Packages are simple-minded in Java and dangerous. You can accidentally use the wrong classes. So if you misspell a class name and there happens to be a class by that name in the same directory, Java will not detect it.
import java.util.*; // imports java.util.Date import java.sql.*; // also import java.util.Date public class Collision { HashMap m; Date d; }Does not compile.