Nous avons écrit quelques programmes Java. Chaque programme Java précédent a été enregistré sous forme de fichier, tel que Test.java. Par la suite, le programme est compilé dans Test.class. Nous finissons par utiliser $java Test pour exécuter le programme.
Cependant, dans un projet Java normal, nous devons souvent écrire plusieurs programmes .java, et le produit Java final inclut tous les programmes Java. Par conséquent, Java doit résoudre le problème de l’organisation des programmes Java. Le but d'un package est de mieux organiser les programmes Java.
Création de packages
La création de packages est très simple. Il suffit d'ajouter le package au début du programme Java. Prenons la classe Human comme exemple et mettons-la dans le package :
Copiez le code comme suit :
package com.vamei.society;
classe publique humaine
{
/**
* constructeur
*/
humain public (int h)
{
ceci.hauteur = h;
System.out.println("Je suis né");
}
/**
*accesseur
*/
public int getHeight()
{
renvoie this.height;
}
/**
* mutateur
*/
public void growHeight (int h)
{
ceci.hauteur = ceci.hauteur + h;
}
hauteur int privée ;
}
Le code pour copier la première ligne des instructions ci-dessus est le suivant :
package com.vamei.society;
Indique que le programme se trouve dans le package com.vamei.society. com.vamei (l'inverse de vamei.com) représente le nom de domaine de l'auteur du package (malheureusement, ce nom de domaine a été enregistré par quelqu'un d'autre, il n'est donc utilisé qu'à des fins de démonstration). Java exige que les packages aient des préfixes de nom de domaine pour distinguer les différents auteurs. La société est un autre nom de chemin local. com.vamei.society forment ensemble le nom du package.
Les packages fournissent un espace de noms pour les programmes Java. Le chemin complet d'une classe Java se compose de son package et du nom de sa classe, par exemple com.vamei.society.Human. Le programme Human.java correspondant doit être placé sous com/vamei/society/. Les classes sont identifiées par leurs chemins complets, vous pouvez donc avoir des classes portant le même nom dans différents packages sans que Java ne soit confus. Par exemple, com.vamei.society.Human et com.vamei.creature.Human sont deux classes différentes.
Regardons un détail supplémentaire. La classe Human est publique, et son constructeur est également public, donc tout autre objet peut appeler cette classe. Comme nous l'avons dit précédemment, il ne peut y avoir qu'une seule classe publique dans un fichier Java, et la classe doit avoir le même nom que le fichier .java. Une classe n'a pas besoin du mot-clé public, qui représente en fait une autorisation : la classe est visible dans le package dans lequel elle se trouve. Autrement dit, d'autres programmes Java du package peuvent accéder à la classe. Il s'agit de l'accès par défaut en Java.
De même, les membres d'un objet peuvent également avoir des autorisations par défaut (visibles dans les packages). Par exemple, nous supprimons le mot-clé public devant la méthode getHeight().
appel à forfait
Il suffit de mettre le Human.class compilé par Human.java dans le dossier correspondant. Par exemple, j'ai mis Human.class dans com/vamei/society/. En fait, vous pouvez également placer le fichier .java dans le chemin correspondant, et Java sera automatiquement compilé lors de son utilisation.
Si l'intégralité du package (c'est-à-dire le dossier com) se trouve dans le chemin de travail actuel, aucun paramètre spécial n'est requis pour utiliser le package, tel que le TestAgain.java suivant :
Copiez le code comme suit :
importer com.vamei.society.* ;
classe publique TestAgain
{
public static void main (String[] arguments)
{
Humain aPerson = nouvel Humain (180);
System.out.println(aPerson.getHeight());
}
}
l'importation est utilisée pour identifier les chemins. En utilisant l'instruction import, nous pouvons introduire des classes sous le chemin correspondant. *Indique l'introduction de toutes les classes dans le dossier société. Dans TestAgain, nous utilisons directement la classe Human.
Nous pouvons également fournir le chemin complet vers la classe. Cela permet de distinguer les classes portant le même nom mais des chemins différents, telles que :
Copiez le code comme suit :
classe publique TestAgain
{
public static void main (String[] arguments)
{
com.vamei.society.Human aPerson =
nouveau com.vamei.society.Human(180);
System.out.println(aPerson.getHeight());
}
}
Puisque nous fournissons le chemin de classe complet, il n’est pas nécessaire d’utiliser l’instruction import.
Si le package n'est pas placé dans le chemin de travail actuel, nous devons en informer Java lors de l'utilisation du package. Par exemple, nous mettons le package dans /home/vamei/javapackage, de sorte que Human.class se trouve dans /home/vamei/javapackage/com/vamei/society/Human.class, et notre chemin de travail est /home/vamei. De cette façon, le package est introuvable. Une méthode consiste à utiliser -classpath pour spécifier le chemin du dossier où se trouve le package lors de l'utilisation de javac et java, par exemple :
Copiez le code comme suit :
$javac -classpath /home/vamei/javapackage :.
$java -classpath /home/vamei/javapackage :.
Recherchez simplement le package dans /home/vamei/javapackage et le chemin de travail (.). Java peut trouver la classe Human dans /home/vamei/javapackage et la classe TestAgain dans .
De plus, vous pouvez également définir la variable d'environnement CLASSPATH du système et ajouter le chemin ci-dessus à la variable sans taper l'option -classpath à chaque fois.
Des mécanismes similaires aux packages sont également courants dans d'autres langages, comme le mécanisme d'importation en Python. Il s’agit avant tout de mieux organiser et utiliser les programmes existants. À l'aide de packages, nous pouvons facilement étendre les programmes Java et utiliser les bibliothèques de programmes Java existantes. Notez que le package gère les fichiers .class. Java est connu sous le nom de « Compiler une fois, exécuter n'importe où » (Compile une fois, exécuter n'importe où). Les fichiers .class peuvent s'exécuter sur n'importe quelle plate-forme équipée d'une machine virtuelle Java (JVM, Java Virtual Machine), ce qui nous aide à surmonter les difficultés de portage des programmes causées par les différences entre les systèmes.
Les différences entre les systèmes peuvent être très importantes. Si nous écrivons un programme en langage C, le programme source doit être recompilé sur chaque plateforme pour s'adapter aux différentes conditions matérielles. La machine virtuelle Java connecte la plate-forme et l'univers Java et constitue la couche intermédiaire entre le matériel et la logique de programmation. La JVM masque les différences matérielles et offre aux programmeurs un univers Java « standard ». Le fichier .class peut être considéré comme la monnaie circulant dans cet univers Java. Grâce à l'infrastructure JVM et à l'assistance à la gestion des packages, les programmes Java atteignent une bonne portabilité.
Résumer
paquet, importation
Autorisations par défaut : visibles dans le package
-chemin de classe, CHEMIN DE CLASSE