Ir al contenido principal

Java Tip 5: Paquetes (package)




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

Entradas populares de este blog

¿Cómo diseñar una API REST? (Youtube)

Lo nuevo de Java desde la versión 12 hasta la 22

Aquí unos enlaces a varias publicaciones sobre algunos nuevos aspectos del lenguaje Java, desde la versión 12 a la 22. Expresiones Switch en Java Una nueva funcionalidad en el lenguaje: las expresiones switch. https://emanuelpeg.blogspot.com/2025/01/expresiones-switch-en-java.html API de Servidor Web Simple en Java Una API de Servidor Web Simple que permite crear servidores HTTP ligeros sin necesidad de dependencias externas. https://emanuelpeg.blogspot.com/2025/02/api-de-servidor-web-simple-en-java.html Clases Record Una implementación de las data-clases o del patrón Data Transfer Object, un tipo de clase cuyo único propósito es impulsar la programación con datos inmutables. https://alquimistadecodigo.blogspot.com/2025/02/java-clases-record.html https://emanuelpeg.blogspot.com/2025/02/record-en-java.html Clases Selladas y coincidencia de patrones en Java https://emanuelpeg.blogspot.com/2025/03/clases-selladas-y-coincidencia-de.html https://emanuelpeg.blogspo...

Java en ejemplos: creando nuestras propias excepciones

De errores y excepciones Una excepción en programación es una anomalía en el flujo de un programa. El programador puede anticiparse a ésta haciendo que su código pueda librarla y que el programa no termine abruptamente. Ejemplo. Una excepción podría ocurrir en un programa que lee archivos de texto, el programa es incapaz de leer líneas con acentos, apóstrofes, letras Ñ o símbolos raros. El programador tendría que saber manejar esas excepciones y mitigarlas. Un error es un problema en el programa que hará que éste termine abruptamente; el programador queda indefenso, no puede hacer nada al respecto para remediarlo. Este error puede ser falta de memoria o recursos del sistema, entre otros más. Ejemplo. Un programa pude cerrarse abruptamente al quedarse sin memoria el sistema operativo. En Java cada clase (propia o definida por el programador) es hija de la clase padre ``Object``. La clase ``Throwable`` es padre de la clase ``Exception`` y así sucesivamente. Como ...