Sometimes, though there are groups of classes that work together so closely that a high degree of coupling is unavoidable and not really undesirable. The AddressBook and Person classes used in Labs 10-12 plus Project 5 are like this. This is a perfectly reasonable and proper form of coupling. We have already made extensive use of packages of classes - e.g. kareltherobot, javabook, and the various java. The Java system requires that the package structure be mirrored by the directory structure, both for source files and for class files - e.g. a class Foo in package mypackage.stuff must have a source file called Foo.java and will produce a class file called Foo.class, both of which must reside in a folder called stuff in a folder called mypackage.
Classes belonging to the same package have certain privileges with regard to one another.
A feature that has no visibility specified is accessible only to the class in which it occurs and other classes in the same package. To be accessible to classes in a different package, a feature must have public visibility. Note that a class that does not have a package statement is considered to belong to a top-level, unnamed package. Thus all classes that are not declared as being in a package effectively belong to the same package - the package that has no name.