A member of a package (§7) is a subpackage (§7.1), or a class (§8) or interface (§9) type declared in a compilation unit (§7.3) of the package.
In general, the subpackages of a package are determined by the host system (§7.2). However, the standard package java
always includes the subpackages lang
, util
, io
, and net
and may include other subpackages. No two distinct members of the same package may have the same simple name (§7.1), but members of different packages may have the same simple name. For example, it is possible to declare a package:
package vector; public class Vector { Object[] vec; }
that has as a member a public
class named Vector
, even though the standard
package java.util
also declares a class named Vector
. These two class types
are different, reflected by the fact that they have different fully qualified names
(§6.7). The fully qualified name of this example Vector
is vector.Vector
,
whereas java.util.Vector
is the fully qualified name of the standard Vector
class. Because the package vector
contains a class named Vector
, it cannot also
have a subpackage named Vector
.