Un paquete, como su nombre indica, es un paquete (grupo) de clases, interfaces y otros paquetes. En java usamos paquetes para organizar nuestras clases e interfaces. Tenemos dos tipos de paquetes en Java: paquetes integrados y paquetes que podemos crear (también conocido como paquete definido por el usuario). En esta guía aprenderemos qué son los paquetes, qué paquetes definidos por el usuario están en java y cómo usarlos.

En java tenemos varios paquetes integrados, por ejemplo, cuando necesitamos la entrada del usuario, importamos un paquete como este:

import java.util.Scanner

Aquí:
Java es un paquete de nivel superior
util es un paquete secundario
→ y Escáner es una clase presente en el subpaquete util.

Antes de ver cómo crear un paquete definido por el usuario en Java, veamos los beneficios de usar un paquete.

Ventajas de usar un paquete en Java

Estas son las razones por las que debería utilizar paquetes en Java:

  • Reutilización: Mientras desarrollamos un proyecto en Java, a menudo escuchamos que hay pocas cosas que escribimos una y otra vez en nuestro código. Usando paquetes, puede crear cosas así en forma de clases dentro de un paquete y siempre que necesite realizar la misma tarea, simplemente importe ese paquete y use la clase.
  • Mejor organizacion: Nuevamente, en grandes proyectos de Java donde tenemos varios cientos de clases, siempre es necesario agrupar tipos similares de clases en un nombre de paquete significativo para que pueda organizar mejor su proyecto y cuando necesite algo, pueda ubicarlo rápidamente y usarlo. , que mejora la eficiencia.
  • Conflictos de nombres: Podemos definir dos clases con el mismo nombre en diferentes paquetes para evitar conflictos de nombres, podemos usar paquetes

Tipos de paquetes en Java

Como se mencionó al principio de esta guía, tenemos dos tipos de paquetes en java.
1) Paquete definido por el usuario: el paquete que creamos se llama paquete definido por el usuario.
2) Paquete integrado: paquetes ya definidos como java.io. *, java.lang. * Etc. Se conocen como paquetes integrados.

leer  Herencia multinivel en java con ejemplo

Ya hemos hablado de los paquetes integrados, analicemos los paquetes definidos por el usuario con la ayuda de ejemplos.

Ejemplo 1: paquetes de Java

He creado una clase Calculator dentro de un nombre de paquete letmecalculate. Para crear una clase dentro de un paquete, declare el nombre del paquete en la primera declaración de su programa. Una clase solo puede tener una declaración de paquete.
Archivo Calculator.java creado dentro de un paquete letmecalculate

package letmecalculate;

public class Calculator {
   public int add(int a, int b){
	return a+b;
   }
   public static void main(String args[]){
	Calculator obj = new Calculator();
	System.out.println(obj.add(10, 20));
   }
}

Ahora veamos cómo usar este paquete en otro programa.

import letmecalculate.Calculator;
public class Demo{
   public static void main(String args[]){
	Calculator obj = new Calculator();
	System.out.println(obj.add(100, 200));
   }
}

Para usar la clase Calculadora, importé el paquete letmecalculate. En el programa anterior importé el paquete como letmecalculate.Calculator, esto solo importa la clase Calculadora. Sin embargo, si tiene varias clases dentro del paquete letmecalculate para que pueda importar el paquete así, para usar todas las clases de este paquete.

import letmecalculate.*;

Ejemplo 2: crear una clase dentro de un paquete al importar otro paquete

Como hemos visto, tanto la declaración del paquete como la importación del paquete deben ser la primera declaración en su programa java. Veamos cuál debería ser el orden cuando creamos una clase dentro de un paquete mientras importamos otro paquete.

//Declaring a package
package anotherpackage;
//importing a package
import letmecalculate.Calculator;
public class Example{
   public static void main(String args[]){
	Calculator obj = new Calculator();
	System.out.println(obj.add(100, 200));
   }
}

Entonces, el orden en este caso debería ser:
→ declaración del paquete
→ importación de paquetes

leer  POO en Java: encapsulación, herencia, polimorfismo, abstracción

Ejemplo 3: uso de un nombre completo al importar una clase

Puede utilizar un nombre completo para evitar la declaración de importación. Veamos un ejemplo para entender esto:
Calculator.java

package letmecalculate;
public class Calculator {
   public int add(int a, int b){
	return a+b;
   }
   public static void main(String args[]){
	Calculator obj = new Calculator();
	System.out.println(obj.add(10, 20));
   }
}

Example.java

//Declaring a package
package anotherpackage;
public class Example{
   public static void main(String args[]){
        //Using fully qualified name instead of import
	letmecalculate.Calculator obj = 
		new letmecalculate.Calculator();
	System.out.println(obj.add(100, 200));
   }
}

En la clase Example, en lugar de importar el paquete, utilicé el nombre completo completo como package_name.class_name para crear su objeto. También puede leer: Importación estática en Java

Paquetes secundarios en Java

Un paquete dentro de otro paquete se conoce como paquete secundario. Por ejemplo, si creo un paquete dentro del paquete letmecalculate, se llamará paquete secundario.

Digamos que he creado otro paquete dentro letmecalculate y el nombre del subpaquete es multiply. Entonces, si creo una clase en este subpaquete, debería tener esta declaración de paquete al principio:

package letmecalculate.multiply;

Multiplication.java

package letmecalculate.multiply;
public class Multiplication {
	int product(int a, int b){
		return a*b;
	}
}

Ahora, si necesito usar esta clase de multiplicación, necesito importar el paquete de esta manera:

import letmecalculate.multiply;

o puedo usar un nombre completo como este:

letmecalculate.multiply.Multiplication obj = 
     new letmecalculate.multiply.Multiplication();

Puntos para recordar:

1. A veces puede ocurrir un conflicto de nombre de clase. Por ejemplo: digamos que tenemos dos paquetes abcpackage es xyzpackage y ambos paquetes tienen una clase con el mismo nombre, déjalo ser JavaExample.java. Ahora suponga que una clase importa estos dos paquetes así:

import abcpackage.*;
import xyzpackage.*;

Esto generará un error de compilación. Para evitar tales errores, debe utilizar el método de nombre completo que he mostrado anteriormente. Por ejemplo

abcpackage.JavaExample obj = new abcpackage.JavaExample();
xyzpackage.JavaExample obj2 = new xyzpackage.JavaExample();

De esta manera, puede evitar declaraciones de importación de paquetes y evitar ese error de conflicto de nombres.

leer  Constructores en Java - ¡Un estudio completo!

2. Ya lo he discutido anteriormente, permítanme mencionarlo nuevamente aquí. Si creamos una clase dentro de un paquete mientras importamos otro paquete, la declaración del paquete debe ser la primera declaración, seguida de la importación del paquete. Por ejemplo:

package abcpackage;
import xyzpackage.*;

3. Una clase solo puede tener una declaración de paquete, pero puede tener más de una declaración de importación de paquete. Por ejemplo:

package abcpackage; //This should be one
import xyzpackage;
import anotherpackage;
import anything;

4. Importación de comodines como paquete. * Debe usarse con cuidado al trabajar con bolsas inferiores. Por ejemplo: digamos: tenemos un paquete a B C y dentro de ese paquete tenemos otro paquete foo, ahora foo es un subpaquete.

las clases dentro de abc son: Ejemplo 1, Ejemplo 2, Ejemplo 3
las clases dentro de foo son: Demo1, Demo2

Entonces, si importa el paquete a B C usando caracteres comodín como este:

import abc.*;

Por lo tanto, solo importará las clases Example1, Example2 y Example3, pero no importará las clases de subpaquete.

Para importar las clases del subpaquete es necesario importar de esta forma:

import abc.foo.*;

Esto importará Demo1 y Demo2 pero no importará Example1, Example2 y Example3.

Entonces, para importar todas las clases presentes en el paquete y subpaquete, necesitamos usar dos declaraciones de importación como esta:

import abc.*;
import abc.foo.*;

Por avivcas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *