Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
Only public package members are accessible outside the package in which they are defined. To use a public package member from outside its package, you must do one or more of the following:Each is appropriate for different situations, as explained in the following sections.
- Refer to the member by its long (qualified) name
- Import the package member
- Import the members entire package
So far, the examples in this tutorial have referred to classes and interfaces by their simple names, such asRectangle
andStockWatcher
. You can use a package members simple name if the code you are writing is in the same package as that member or if the members package has been imported.However, if you are trying to use a member from a different package and that package has not been imported, you must use the members qualified name, which includes the package name. This is the qualified name for the
Rectangle
class declared in thegraphics
package in the previous example:You could use this long name to create an instance ofgraphics.Rectanglegraphics.Rectangle
:You'll find that using long names is okay for one-shot uses. But you'd likely get annoyed if you had to writegraphics.Rectangle myRect = new graphics.Rectangle();graphics.Rectangle
again and again. Also, your code would get very messy and difficult to read. In such cases, you can just import the member instead.
To import a specific member into the current file, put animport
statement at the beginning of your file before any class or interface definitions but after thepackage
statement, if there is one. Here's how you would import theCircle
class from thegraphics
package created in the previous section:Now you can refer to theimport graphics.Circle;Circle
class by its simple name:This approach works well if you use just a few members from theCircle myCircle = new Circle();graphics
package. But if you use many classes and interfaces from a package, you can import the entire package.
To import all the classes and interfaces contained in a particular package, use theimport
statement with the asterisk(*)
wildcard character:Now you can refer to any class or interface in theimport graphics.*;graphics
package by its short name:The asterisk in theCircle myCircle = new Circle(); Rectangle myRectangle = new Rectangle();import
statement can be used only to specify all the classes within a package, as shown here. It cannot be used to match a subset of the classes in a package. For example, the following does not match all the classes in thegraphics
package that begin withA
:Instead, it generates a compiler error. With theimport graphics.A*; // does not workimport
statement, you can import only a single package member or an entire package.For your convenience, the Java runtime system automatically imports two entire packages:
- The
java.lang
package- The current package by default
If by some chance a member in one package shares the same name with a member in another package and both packages are imported, you must refer to each member by its qualified name. For example, the previous example defined a class namedRectangle
in thegraphics
package. Thejava.awt
package also contains aRectangle
class. If bothgraphics
andjava.awt
have been imported, the following is ambiguous:In such a situation, you have to be more specific and use the members qualified name to indicate exactly whichRectangle rect;Rectangle
class you want:graphics.Rectangle rect;
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
Copyright 1995-2004 Sun Microsystems, Inc. All rights reserved.