logo

Java-Pakete

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:

AusgabeJavaPackages' title=Programm mit Ordnerpfad ausführen

Ordnerstruktur:

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:

PackageInJava1' loading='lazy' title=Ordnerstruktur

Arbeiten 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

Java
import 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:

Java
package 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:

Java
import 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

Java
package package_name; public class ClassOne {  public void methodClassOne()  {  System.out.println('Hello there its ClassOne');  } } 

Erstellen unseres zweiten Pakets: Dateiname – ClassTwo.java

Java
package package_one; public class ClassTwo {  public void methodClassTwo()  {  System.out.println('Hello there i am ClassTwo');  } } 

Verwendung beider erstellter Pakete: Dateiname – Testing.java

Java
import 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:

Verzeichnisstruktur' loading='lazy' title=

Zugriffsmodifikatoren im Kontext von Paketen

  • Öffentlich: Mitglieder mit derpublicModifikatoren 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 derprivateModifikatoren sind nur innerhalb derselben Klasse zugänglich. Auf sie kann nicht von Klassen in denselben Paketunterklassen oder verschiedenen Paketen zugegriffen werden.