2010-07-24 8 views
8

Quand utilisons-nous réellement le mot-clé package? Qu'est-ce que ça veut dire?Package en Java

Supposons que j'écrire le code suivant:

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


} 

Qu'est-ce que cette chose paquet faire? Je reçois un fichier masnun.class qui ne fonctionne pas. Je suis nouveau à Java. Quelqu'un peut-il expliquer s'il vous plaît?

Merci

+1

Les réponses à cette question peuvent vous aider: http://stackoverflow.com/questions/1088509/what-is-the-purpose-of-defining-a-package-in-java-file – BoltClock

Répondre

13

Comme je ne suis pas fan de ces autres réponses, j'écrirai les miennes.


du monde réel Exemples:

Pensez à un « paquet » comme un moyen facile pour une classe java pour référencer un autre.

Disons que j'ai cette grosse boîte dans mon grenier. J'ai une calculatrice, une boussole, un rapporteur, etc. Je peux étiqueter cette boîte MathTools.

Un autre exemple consisterait à prendre toutes vos photos et à les placer dans le dossier Pictures de vos documents. De là, vous pouvez les diviser en Spring Break 2009 ou [Insert Name Here]'s Party.

Comment cela se rapporte-t-il à Java? Eh bien, regardons le paquet java.util (vous pouvez faire référence à ceci avec import java.util.*;.) Vous avez ArrayLists, Strings, Random, etc. qui sont utilisés dans la plupart des programmes Java (si vous préférez les "utilities" communs). le même paquet, de sorte que les programmeurs peuvent facilement les référencer (import java.util.*;)


application facile.

Supposons que nous pouvons trouver tous les fichiers à un petit simulateur de dés dans C:/Program Files/Java Project/my/proj/ (il est probable que ce fichier n'existe pas sur votre ordinateur, mais faites juste semblant pendant un moment)

Vous avez 3 fichiers: Main.java, Dice.java et DiceRoller.java. Tous sont représentés ci-dessous:

.

"C:/ProgramFiles/Projet Java/ma/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:/ProgramFiles/Projet Java/ma/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/Java/projet/mes 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 
     } 
    } 
} 

.

A noter:

  • Main.java est emballé dans my.proj.main
  • Dice.java est emballé dans my.proj.sims
  • Main.java doit importer my.proj.sims.Dice afin de créer un objet Dice et utiliser ses méthodes, car il est dans un paquet différent de Dice.java.
  • n'a pas besoin d'importer my.proj.sims.Dice car il se trouve dans le même package que Dice.java et le compilateur les associe automatiquement.

.

Import est une commande permettant de charger la fonctionnalité d'une classe dans le fichier en cours. Regardez Dice.java, par exemple. Pour créer un objet Random, qui a la méthode nextInt(), il doit importer la classe Random du package java.util.*.

.

Vous remarquerez que certaines personnes préféreraient utiliser java.util.* au lieu de java.util.Random, java.util.ArrayList, etc. Ce que le * signifie essentiellement une classe dans java.util. L'exécution import java.util.* importera les classes Random, String, ArrayList, etc.

.

Espérons que cela éclaircit les choses. S'il vous plaît envisager upvoting si cela vous a aidé :)

+0

Salut, génial! Avez vous fini de manger? J'attends! :) Merci pour le temps et les efforts. – masnun

+0

Merci pour les efforts et le temps. Comment puis-je le compiler? – masnun

+0

@maSnun: Salut. Désolé, j'ai manqué de temps hier. Utilisez-vous un IDE (Eclipse, JCreator, NetBeans, etc.)? Avez-vous installé le dernier kit de développement JDK (http://java.sun.com/javase/downloads/widget/jdk6.jsp)? –

1

« Les paquets sont rien de plus que la façon dont nous organisons des fichiers dans des répertoires différents en fonction de leur fonctionnalité, la facilité d'utilisation, ainsi que la catégorie ils devraient appartenir. » Fondamentalement, dans votre exemple, vous dites que la classe masnun est un paquet de package masnun. Donc, essentiellement dans d'autres classes, vous pouvez référencer cette classe par import masnun; Qui importe la classe masnun qui réside dans le paquet masnun.

+0

Dois-je organiser? le fichier de classe dans un groupe spécifique? Peut-être comme mettre le masnun.class dans un répertoire nommé masnun? Je n'ai toujours pas compris. Quand j'utilise cette commande - import masnun; , qu'est-ce qui se passe réellement? Où la JVM recherche-t-elle le paquet? Ou cherche-t-il la classe? Je veux dire ce qui va me permettre d'exécuter ce fichier en utilisant la commande "java masnun"? – masnun

+0

@maSnum: oui, le chargeur de classe Java standard recherche des classes dans une hiérarchie de répertoires correspondant à la hiérarchie du paquet. Fondamentalement, import masnum.MyClass recherche un fichier MyClass.class dans un masque de redirection dans l'une des racines de classpath (qui incluent généralement le répertoire courant). –

+0

J'allais essayer de répondre à cette question, mais: Ce sont les principes fondamentaux de Java, cela n'a aucun sens de faire un tutoriel Java complet sous forme de questions-réponses. Vous seriez mieux servi de lire (et de travailler) un [tutoriel Java] (http://www.programmingtutorials.com/java.aspx) ou deux. –

3

Il est très probable d'un logiciel pour avoir des classes nommées Logger, Base de données, Connexion, table, etc. paquets séparés du champ d'application de ces classes, de sorte que vous n'avez pas des problèmes avec double classnames.

Quelques exemples:.

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

Si vous ne voulez pas utiliser les classes d'un paquetage, vous devez les importer.

import java.util.Date 

ou

import java.sql.Date 
2

Il est une façon d'organiser vos fichiers source. Un package contient plusieurs fichiers de classe, un fichier de classe ne contient qu'une classe publique, une classe contient plusieurs méthodes et variables.

2

L'instruction de package dans Java est utilisée pour regrouper plusieurs classes liées. Si vous avez des classes qui traitent exclusivement avec l'interaction de base de données, il serait logique de les mettre tous sous

com.example.myapp.persistence 

Cela permet aussi le benefice de l'espacement nom, rappelez-vous que dans le cadre de l'exécution d'une identité de classe Java est son complet nom, qui est, le nom de classe précédé par son nom de package comme dans

com.example.myapp.persistence.UserDAO 

Lorsque vous êtes demande augmente pour plus de deux classes, il est à la fois pratique et une bonne pratique de les organiser dans des emballages

0

En terme de Layman, Supposons qu'il existe plusieurs départements dans un collège comme la science, les arts, etc. Maintenant, chaque département a un employé. En termes d'objet, il peut y avoir plusieurs classes Employee donc il y a une restriction dans java que nous ne pouvons pas mettre deux classes sous le même nom. Le programmeur doit faire différents paquets pour stocker des classes différentes avec le même nom dans l'application.

Questions connexes