## Utilizar Clases e Interfaces desde un Paquete

Para importar una clase específica o un interface al fichero actual (como la clase Circle desde el paquete graphics creado en la sección anterior) se utiliza la sentencia de import:

    import graphics.Circle;

Esta sentencia debe estar al principio del fichero antes de cualquier definición de clase o de interface y hace que la clase o el interface esté disponible para su uso por las clases y los interfaces definidos en el fichero.

Si se quiere importar todas las clases e interfaces de un paquete, por ejemplo, el paquete graphics completo, se utiliza la sentencia import con un caracter comodín, un asterisco '*'.

    import graphics.*;

Si intenta utilizar una clase o un interface desde un paquete que no ha sido importado, el compilador mostrará este error:

    testing.java:4: Class Date not found in type declaration.
            Date date;
            ^

Observa que sólo las clases e intefaces declarados como públicos pueden ser utilizados en clases fuera del paquete en el fueron definidos.

El paquete por defecto (un paquete sin nombre) siempre es importado. El sistema de ejecución también importa automáticamente el paquete java.lang.

Si por suerte, el nombre de una clase de un paquete es el mismo que el nombre de una clase en otro paquete, se debe evitar la ambigüedad de nombres precediendo el nombre de la clase con el nombre del paquete. Por ejemplo, previamente se ha definido una clase llamada Rectangle en el paquete graphics. El paquete java.awt también contiene una clase Rectangle. Si estos dos paquetes son importados en la misma clase, el siguiente código sería ambigüo:

    Rectangle rect;

En esta situación se tiene que ser más especíco e indicar exactamente que clase Rectangle se quiere:

    graphics.Rectangle rect;

Se puede hacer esto anteponiento el nombre del paquete al nombre de la clase y separando los dos con un punto.

Ozito