Los paquetes (package) en Java son la manera en la cual organizamos nuestras clases. Es importante respetar el orden de declaración y por lo tanto la palabra package debe ser la primera línea del archivo fuente.
Ejemplo. Tenemos un archivo llamado A.java en el directorio C:\Users\DELL\javaTest\pack1. Dicho de otro modo C:\Users\DELL\javaTest\pack1\A.java
/** * pack1 es el lugar donde se encuentra * el archivo A.java */ package pack1; public class A{ //variables de instancia //Constructor(es) //métodos }
Ahora tenemos otro archivo llamado B.java en el directorio C:\Users\DELL\Documents\programacion\pack2 Osea C:\Users\DELL\Documents\programacion\pack2\B.java.
/** * pack2 es el lugar donde se encuentra * el archivo B.java */ package pack2; public class B{ //variables de instancia //Constructor(es) //métodos }
¿Cómo podemos hacer uso de los archivos A.java y B.java en otro archivo?
Tenemos un archivo llamado C.java en el directorio C:\Users\DELL\Documents\programacion\pack3. Así: C:\Users\DELL\Documents\programacion\pack3\C.java
/** * pack3 es el lugar donde se encuentra * el archivo C.java */ package pack3; //debemos importar las clases A y B public class C{ public static void main(String[] args){ } }
Para poder importar las clases A.java y B.java en el archivo C.java necesitamos usar la palabra import seguido del paquete y clase a importar.
Primera opción: Importar las clases de un package.
/** * pack3 es el lugar donde se encuentra * el archivo C.java */ package pack3; //Importamos la clase A del package pack1 import pack1.A; //Importamos la clase B del package pack2 import pack2.B; public class C{ public static void main(String[] args){ A a = new A(); B b = new B(); } }
Segunda opción: Importar todo de un package en específico.
/** * pack3 es el lugar donde se encuentra * el archivo C.java */ package pack3; //Importamos todo del package pack1 import pack1.*; //Importamos tyodo del package pack2 import pack2.*; public class C{ public static void main(String[] args){ A a = new A(); B b = new B(); } }
Nota: como buena práctica no deberíamos importar todo el contenido de un package sólo cuando la situación así lo requiera.
Esto se puede ver mejor así:
..\pack1\A.java
..\pack2\B.java
..\pack3\C.java
Ahora supongamos que tenemos algo como esto:
..\pack1\clases\A.java
..\pack2\interfaces\B.java
..\pack3\test\C.java
El archivo A.java se vería así:
/** * * ..\pack1\clases\A.java **/ package pack1.clases; public class A{}
El archivo B.java:
/** * * ..\pack2\interfaces\B.java **/ package pack2.interfaces; public interface B{ public abstract void nada(); }
Finalmente el archivo C.java:
/** * * ..\pack3\test\C.java **/ package pack3.test; //importamos clase A.java import pack1.clases.A; //importamos interface B.java import pack2.interface.B; public class C implements B{ private A a; @Override public void nada(){ } }
¿Qué pasa con los archivos que pertenecen al mismo package?
Su importación es directa...\pack1\X.java
..\pack1\Y.java
X.java
package pack1; public class X{ // Y.java esta dentro del mismo paquete de X.java public Y y; }
Y.java
package pack1; public class Y{ // X.java esta dentro del mismo paquete de Y.java public X x; }
Comentarios
Publicar un comentario