2010-07-24 8 views
8

¿Cuándo usamos realmente la palabra clave package? Qué significa eso?Paquete en Java

Supongamos que escribir el siguiente código:

package masnun;  
public class masnun{ 
    public static void main(String args[]) { 
      System.out.println("Hello maSnun!"); 
     } 


} 

¿Qué hace esta cosa paquete? Obtengo un archivo masnun.class que no se ejecuta. Soy nuevo en Java. ¿Alguien puede explicar?

Gracias

+1

Las respuestas a esta pregunta pueden ayudar: http://stackoverflow.com/questions/1088509/what-is-the-purpose-of-defining-a-package-in-java-file – BoltClock

Respuesta

13

Como no soy fanático de estas otras respuestas, escribiré las mías.


reales ejemplos del mundo:

Piense en un "paquete" como una manera fácil para una clase de Java para hacer referencia a otra.

Digamos que tengo esta gran caja en mi ático. Tengo una calculadora, una brújula, un transportador, etc. Puedo etiquetar esta casilla MathTools.

Otro ejemplo sería tomar todas las fotografías y ponerlas en la carpeta Pictures en sus documentos. A partir de ahí, puede dividirlos en Spring Break 2009 o [Insert Name Here]'s Party.

¿Cómo se relaciona esto con Java? Bueno, echemos un vistazo al paquete java.util (puede hacer referencia a esto con import java.util.*;. Tiene ArrayLists, Strings, Random, etc. que se utilizan en la mayoría de los programas Java ("utilidades" comunes, si lo prefiere). Todos están organizados cuidadosamente en el mismo paquete, por lo que los programadores pueden crear fácilmente una referencia de ellos (import java.util.*;)


Fácil aplicación:.

vamos a suponer que podemos encontrar todos los archivos a un pequeño simulador de dados en C:/Program Files/Java Project/my/proj/ (lo más probable que este archivo no existe en su computadora, pero solo pretendo por un momento).

Tiene 3 archivos: Main.java, Dice.java y DiceRoller.java. Todos los cuales se muestran a continuación:

.

"C:/Archivos de programa/proyecto Java/mi/proj/main/Main.java":

package my.proj.main; 

import my.proj.sims.Dice; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     DiceRoller roller = new DiceRoller(); 
     roller.rollAndShow(4); 
    } 
} 

"C:/Archivos de programa/proyecto Java/mi/proj/sims/Dice.java":

package my.proj.sims; 

import java.util.Random; // I used the Random class, but you can also use the Math class if you prefer (java.lang.Math) 

public class Dice 
{ 
    public Dice() 
    { 
    } 

    public int roll() 
    { 
     Random rand = new Random();  
     return rand.nextInt(6) + 1; // Rolls a random number 1-6 
    } 
} 

"C:/ProgramFiles/proyecto Java/mis/proj/sims/DiceRoller.java":

package my.proj.sims; 

public class DiceRoller 
{ 
    public DiceRoller() 
    { 
    } 

    // Rolls and prints the result of 'n' number of rolls 
    public void rollAndShow(int n) 
    { 
     Dice dice = new Dice(); 

     for (int i = 0; i < n; i++) 
     { 
      System.out.println(dice.roll()); // You should never use S.o.p in a method - it's bad practice, but it's easier this way if you don't yet understand the concept of objects 
     } 
    } 
} 

.

cosas a destacar:

  • Main.java se empaqueta en my.proj.main
  • Dice.java se empaqueta en my.proj.sims
  • Main.java necesidades de importar my.proj.sims.Dice con el fin de crear un objeto Dice y utilizar sus métodos porque está en una paquete diferente desde Dice.java.
  • DiceRoller.java no necesita importar my.proj.sims.Dice porque está en el mismo paquete que Dice.java y el compilador asociará automáticamente los dos.

.

Import es un comando para cargar la funcionalidad de una clase en el archivo actual. Mira Dice.java, por ejemplo. Para que cree un objeto Random, que tiene el método nextInt(), necesita importar la clase Aleatoria del paquete java.util.*.

.

Usted puede notar que algunas personas prefieren utilizar java.util.* en lugar de java.util.Random, java.util.ArrayList, etc. Lo que el * significa esencialmente es cualquier clase dentro de java.util. Al ejecutar import java.util.* se importarán las clases Random, String, ArrayList, etc.

.

Espero que esto aclare las cosas. Por favor, considere la votación ascendente si esto le ha ayudado :)

+0

¡Hola, genial! ¿Has terminado de comer? ¡Estoy esperando! :) Gracias por el tiempo y los esfuerzos. – masnun

+0

Gracias por el esfuerzo y el tiempo. ¿Cómo lo compilo? – masnun

+0

@maSnun: Hola. Lo siento, me quedé sin tiempo ayer. ¿Estás usando un IDE (Eclipse, JCreator, NetBeans, etc.)? ¿Ha instalado el último JDK (kit de desarrollo java - http://java.sun.com/javase/downloads/widget/jdk6.jsp)? –

1

"Los paquetes son nada más que la manera de organizar los archivos en directorios diferentes de acuerdo a su funcionalidad, facilidad de uso, así como la categoría que debe pertenecer." desde: http://www.jarticles.com/package/package_eng.html

Básicamente, en su ejemplo, usted está diciendo que la clase masnun es el paquete del paquete masnun. Entonces, esencialmente en otras clases, podrías hacer referencia a esta clase importando masnun; Que importa la clase masnun que reside en el paquete masnun.

+0

¿Debo organizarlo? el archivo de clase en un grupo específico? ¿Tal vez como poner masnun.class en un directorio llamado masnun? Todavía no lo entiendo. Cuando uso ese comando - importar masnun; ¿Qué pasa realmente? ¿Dónde busca la JVM el paquete? ¿O busca la clase? Me refiero a lo que me permitirá ejecutar ese archivo utilizando el comando "java masnun"? – masnun

+0

@maSnum: sí, el cargador de clases Java estándar busca clases en una jerarquía de directorios que corresponde a la jerarquía del paquete. Básicamente, importar masnum.MyClass busca un archivo MyClass.class en un directorio masnum en cualquiera de las raíces de classpath (que generalmente incluyen el directorio actual). –

+0

Iba a tratar de responder a esta pregunta, pero: Estos son los fundamentos de Java, no tiene sentido que hagamos todo un tutorial de Java en forma de preguntas y respuestas. Sería mejor que leyeras (y trabajaras) un [tutorial de Java] (http://www.programmingtutorials.com/java.aspx) o dos. –

3

Es muy probable que un software tenga clases denominadas Logger, Base de datos, Conexión, Tabla, etc. Los paquetes separan el alcance de estas clases, para que no tenga problemas con los nombres de clase duplicados .

Unos pocos ejemplos:.

  • java *
  • org.apache **
  • com.yourcompany.yourproject..

Si desea utilizar clases de un paquete de destino, debe importarlas .i.g.

import java.util.Date 

o

import java.sql.Date 
2

Es una manera de organizar los archivos de origen. Un paquete contiene múltiples archivos de clase, un archivo de clase contiene solo una clase pública, una clase contiene múltiples métodos y variables.

2

La declaración del paquete en Java se utiliza para agrupar varias clases relacionadas. Si tiene clases que se ocupan exclusivamente de la interacción de base de datos, sería lógico poner a todos bajo

com.example.myapp.persistence 

Esto también proporciona el beneficio de nombre de separación, recuerda que en parte el tiempo de ejecución de una identidad de clase Java es su completo nombre, es decir, el nombre de la clase precedido por el nombre del paquete, como en

com.example.myapp.persistence.UserDAO 

Cuando estás aplicación crece para dar cabida a más de un par de clases, que es a la vez práctico y una buena práctica para organizarlos en paquetes

0

En términos Layman, supongamos que hay varios departamentos en una universidad como ciencias, artes, etc. Ahora cada departamento tiene algún empleado. En términos de objeto puede haber múltiples clases Empleado, por lo que existe una restricción en Java que no podemos poner dos clases con el mismo nombre. Por lo tanto, el programador debe hacer diferentes paquetes para almacenar diferentes clases con el mismo nombre en la aplicación.

Cuestiones relacionadas