Pakete in Java sind ein Mechanismus, der eine Gruppe von Klassen, Unterpaketen und Schnittstellen kapselt. Pakete werden verwendet für:
- Vermeiden Sie Namenskonflikte, indem Sie zulassen, dass Klassen mit demselben Namen in verschiedenen Paketen vorhanden sind, z. B. „college.staff.cse.Employee“ und „college.staff.ee.Employee“.
 - Erleichtern Sie die Organisation, Lokalisierung und Verwendung von Klassenschnittstellen und anderen Komponenten.
 - Bieten Sie kontrollierten Zugriff für geschützte Mitglieder, auf die innerhalb desselben Pakets und durch Unterklassen zugegriffen werden kann. Auf Standardmitglieder (kein Zugriffsspezifizierer) kann nur innerhalb desselben Pakets zugegriffen werden.
 
Durch die Gruppierung verwandter Klassen in Paketen fördert Java die Datenkapselung, wodurch Code wiederverwendbar und einfacher zu verwalten ist. Importieren Sie einfach die gewünschte Klasse aus einem Paket, um sie in Ihrem Programm zu verwenden.
Erstellen benutzerdefinierter Pakete
Schritt 1: Erstellen Sie ein Verzeichnis, in dem wir unsere Pakete und Java-Dateien erstellen.
mkdir-PROGRAMMIERUNG
Java-Arraylist-Methoden
Schritt 2: Wechseln Sie nun das Verzeichnis und erstellen Sie einen weiteren Ordner im Hauptordner
CD-PROGRAMMIERUNG
mkdir JavaProgrammierung
cd JavaProgrammierung
mkdir-Arrays
Schritt 3: Erstellen Sie nun eine leere Textdatei und schreiben Sie den folgenden Java-Code. Vergessen Sie nicht, ihn unter demselben Namen wie die Klasse mit der Erweiterung .java (TwoPointers.java) zu speichern.
TwoPointers-Klasse.
Java
package JavaProgramming.arrays; // Main class present inside the package  public class TwoPointers {  public static void main(String[] args) {  System.out.println('Inside the package');  } } 
   
    Notiz:   Vergessen Sie nicht, den Paketnamen in die Programmdatei einzufügen.
Schritt 4: Führen Sie nun das Programm mit dem definierten Ordnerpfad aus
javac srcJavaProgrammingarraysTwoPointers.java
Java srcJavaProgrammingarraysTwoPointers.java
Ausgabe:
Programm mit Ordnerpfad ausführenOrdnerstruktur:
Dies ist die visuelle Darstellung eines benutzerdefinierten Pakets in Java im folgenden Bild. Zuerst erstellen wir einen Ordner mit dem Namen „Progamming“ und darin ein Paket „Javaprogramming“ und dann ein weiteres Unterpaket mit dem Namen „ Arrays . Dann erstellen wir darin eine Java-Klassendatei, die im Bild unten gezeigt wird:
OrdnerstrukturArbeiten mit Java-Paketen
Verzeichnisstruktur: Paketnamen und Verzeichnisstrukturen hängen eng zusammen. Wenn ein Paketname beispielsweise „college.staff.cse“ lautet, sind die drei Verzeichnisse „college staff“ und „cse“, wobei sich „cse“ innerhalb „personal“ und „personal“ innerhalb der Hochschule befindet.
Namenskonventionen : Paketnamen werden in umgekehrter Reihenfolge der Domänennamen geschrieben, z. B. org.geeksforgeeks.practice. In einer Hochschule könnte die Konvention wie folgt aussehen:
- college.tech.cse
 - college.tech.ee
 - Hochschule.Kunstgeschichte
 
Beispiel:
import java.util.*;
Hier ist util ein Unterpaket, das innerhalb des Java-Pakets erstellt wird.
Zugreifen auf Klassen innerhalb eines Pakets
In Java können wir Klassen aus einem Paket mit einer der folgenden Methoden importieren:
1. Importieren Sie eine bestimmte Klasse :
java.util.Vector importieren;
Dadurch wird nur die Vector-Klasse aus dem Paket java.util importiert.
2. Importieren Sie alle Klassen aus einem Paket :
import java.util.*;
Dadurch werden alle Klassen und Schnittstellen aus dem Paket java.util importiert, Unterpakete werden jedoch nicht berücksichtigt.
Zufallszahl zwischen 1 und 10
Beispiel: Importieren Sie die Vector-Klasse
Javaimport java.util.Vector; public class Geeks {    public Geeks() {    // java.util.Vector is imported We are able to access it directly in our code.  Vector v = new Vector();    java.util.ArrayList l = new java.util.ArrayList();  l.add(3);  l.add(5);  l.add(7);    System.out.println(l);  }  public static void main(String[] args) {      new Geeks();  } } 
   Ausgabe
[3 5 7]
Notiz:
- Importpaket verwenden.*; importiert alle Klassen in einem Paket, jedoch keine Klassen aus seinen Unterpaketen.
 - Wenn zwei Pakete Klassen mit demselben Namen haben (z. B. java.util.Date und my.package.Date), verwenden Sie den vollständig qualifizierten Namen, um Konflikte zu vermeiden:
 
import java.util.Date;
import my.package.Date;
Arten von Java-Paketen
- Integrierte Pakete
 - Benutzerdefinierte Pakete
 
1. Integrierte Pakete
Diese Pakete bestehen aus einer großen Anzahl von Klassen, die Teil von Java sind API .Einige der häufig verwendeten integrierten Pakete sind:
- java.lang : Enthält Sprachunterstützungsklassen (z. B. Klassen, die mathematische Operationen für primitive Datentypen definieren). Dieses Paket wird automatisch importiert.
 - java.io: Enthält Klassen zur Unterstützung von Eingabe-/Ausgabeoperationen.
 - java.util : Enthält Dienstprogrammklassen, die Datenstrukturen wie Linked List Dictionary implementieren und unterstützen; für Datums-/Uhrzeitoperationen.
 - java.applet: Enthält Klassen zum Erstellen von Applets.
 - java.aut: Enthalten Klassen zum Implementieren der Komponenten für grafische Benutzeroberflächen (wie Schaltflächen, Menüs usw.). 6)
 - java.net: Enthalten Klassen zur Unterstützung von Netzwerkvorgängen.
 
2. Benutzerdefinierte Pakete
Dies sind die Pakete, die vom Benutzer definiert werden.
1. Erstellen Sie das Paket:
Javascript-Onload
Zuerst erstellen wir ein Verzeichnis myPackage (der Name sollte mit dem Namen des Pakets übereinstimmen). Erstellen Sie dann die MyClass im Verzeichnis, wobei die erste Anweisung die Paketnamen sind.
Beispiel:
Javapackage myPackage; public class MyClass {  public void getNames(String s)  {   System.out.println(s);   } } 
   
    2. Verwenden Sie die Klasse im Programm:   
Jetzt werden wir das verwenden Meine Klasse Klasse in unserem Programm.
Java import myPackage.MyClass; public class Geeks {  public static void main(String args[]) {     // Initializing the String variable with a value   String s = 'GeeksforGeeks';    // Creating an instance of class MyClass in the package.  MyClass o = new MyClass();    o.getNames(s);  } } 
   
    Notiz:   MyClass.java muss im Verzeichnis myPackage gespeichert werden, da es Teil des Pakets ist.  
Statischer Import in Java
Beim statischen Import in Java geht es darum, den Zugriff auf statische Mitglieder zu vereinfachen und ihn von der breiteren Diskussion benutzerdefinierter Pakete zu trennen.
Statischer Import ist eine in der Programmiersprache Java (Version 5 und höher) eingeführte Funktion, die es ermöglicht, in einer Klasse definierte Mitglieder (Felder und Methoden) als öffentlich zu definieren statisch zur Verwendung im Java-Code ohne Angabe der Klasse, in der das Feld definiert ist.
Beispiel:
Javaimport static java.lang.System.*; class Geeks {  public static void main(String args[]) {    // We don't need to use 'System.out' as imported using static.  out.println('GeeksforGeeks');  } } 
   Ausgabe
GeeksforGeeks
Umgang mit Namenskonflikten
Wenn zwei Pakete eine Klasse mit demselben Namen enthalten (z. B. java.util.Date und java.sql.Date), geben Sie den vollständigen Paketnamen an, um Konflikte zu vermeiden.
import java.util.*;
java.sql.* importieren;
//Und dann verwenden Sie die Date-Klasse, dann erhalten wir einen Fehler bei der Kompilierung:
Datum heute; //FEHLER-- java.util.Date oder java.sql.Date?
Der Compiler kann nicht herausfinden, welche Datumsklasse wir benötigen. Dieses Problem kann durch die Verwendung einer bestimmten Importanweisung gelöst werden:
import java.util.Date;
java.sql.* importieren;
Wenn wir beide Date-Klassen benötigen, müssen wir jedes Mal einen vollständigen Paketnamen verwenden, wenn wir ein neues Objekt dieser Klasse deklarieren. Zum Beispiel:
java.util.Date deadLine = new java.util.Date();
java.sql.Date today = new java.sql.Date();Apache
Verzeichnisstruktur und CLASSPATH
Package names correspond to a directory structure. Beispielsweise wird eine Klasse Circle im Paket com.zzz.project1.subproject2 wie folgt gespeichert:
$BASE_DIR/com/zzz/project1/subproject2/Circle.class
- Hier $BASE_DIR stellt das Basisverzeichnis des Pakets dar.
 - Der „Punkt“ im Paketnamen entspricht einem Unterverzeichnis des Dateisystems.
 - Das Basisverzeichnis ( $BASE_DIR ) könnte sich irgendwo im Dateisystem befinden.
 - Daher müssen der Java-Compiler und die Laufzeit über den Speicherort von $BASE_DIR informiert werden, um die Klassen zu finden.
 - Dies wird durch eine Umgebungsvariable namens erreicht KLASSENPfad .
 - CLASSPATH ähnelt einer anderen Umgebungsvariablen PATH, die von der Befehlsshell zum Suchen nach ausführbaren Programmen verwendet wird.
 
CLASSPATH festlegen
CLASSPATH kann auf eine der folgenden Arten festgelegt werden:
- CLASSPATH kann dauerhaft in der Umgebung festgelegt werden, in der sich die Schritte in Windows befinden
 
Gehen Sie zu Systemsteuerung -> System -> Erweitert -> Umgebungsvariablen.
- Wählen Sie „Systemvariablen“, um den CLASSPATH für alle Benutzer im System anzuwenden.
 - Wählen Sie „Benutzervariablen“, um sie nur für den aktuell angemeldeten Benutzer anzuwenden.
 - Bearbeiten oder erstellen Sie CLASSPATH: Wenn CLASSPATH bereits vorhanden ist, wählen Sie es aus und klicken Sie auf „Bearbeiten“. Wenn es nicht vorhanden ist, klicken Sie auf „Neu“.
 - Geben Sie CLASSPATH-Details ein: Geben Sie im Feld „Variablenname“ Folgendes ein: „CLASSPATH“. Geben Sie im Feld „Variablenwert“ die Verzeichnisse und JAR-Dateien durch Semikolons getrennt ein.
 - Geben Sie im Feld „Variablenwert“ die Verzeichnisse und JAR-Dateien durch Semikolon getrennt ein. Beispiel:
 
.c:javaprojectclasses;d:tomcatlibservlet-api.jar
- Der Punkt (
.) stellt das aktuelle Arbeitsverzeichnis dar. - Um die aktuelle Einstellung des CLASSPATH zu überprüfen, geben Sie den folgenden Befehl ein:
 
> KLASSENPfad festlegen
CLASSPATH kann vorübergehend für diese bestimmte CMD-Shell-Sitzung festgelegt werden, indem der folgende Befehl ausgegeben wird:
> SET CLASSPATH=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar
Anstelle der Umgebungsvariablen CLASSPATH können Sie beispielsweise auch die Befehlszeilenoption -classpath oder -cp der Befehle javac und java verwenden
> java –classpath c:javaprojectclasses com.abc.project1.subproject2.MyClass3
Abbildung benutzerdefinierter Pakete: Erstellen unseres ersten Pakets: Dateiname – ClassOne.java
Javapackage package_name; public class ClassOne {  public void methodClassOne()  {  System.out.println('Hello there its ClassOne');  } } 
 Erstellen unseres zweiten Pakets: Dateiname – ClassTwo.java
Javapackage package_one; public class ClassTwo {  public void methodClassTwo()  {  System.out.println('Hello there i am ClassTwo');  } } 
 Verwendung beider erstellter Pakete: Dateiname – Testing.java
Javaimport package_name.ClassOne; import package_one.ClassTwo; public class Testing {  public static void main(String[] args)  {  ClassTwo a = new ClassTwo();  ClassOne b = new ClassOne();  a.methodClassTwo();  b.methodClassOne();  } } 
 Schauen Sie sich nun die Verzeichnisstruktur der Pakete und der Testklassendatei an:
  
Zugriffsmodifikatoren im Kontext von Paketen
-     Öffentlich:   Mitglieder mit der
publicModifikatoren sind von überall aus zugänglich, unabhängig davon, ob sich die zugreifende Klasse im selben Paket befindet oder nicht . - Geschützt: Auf Mitglieder mit dem Modifikator protected kann innerhalb desselben Pakets in Unterklassen zugegriffen werden
 - Standard: Auf Mitglieder ohne Modifikator kann nur innerhalb desselben Pakets zugegriffen werden
 -     Privat:   Mitglieder mit der
privateModifikatoren sind nur innerhalb derselben Klasse zugänglich. Auf sie kann nicht von Klassen in denselben Paketunterklassen oder verschiedenen Paketen zugegriffen werden.