Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java - Pakete

Pakete werden in Java verwendet, um Namenskonflikte zu vermeiden, den Zugriff zu kontrollieren, das Suchen/Auffinden und die Verwendung von Klassen, Schnittstellen, Aufzählungen und Anmerkungen zu erleichtern usw.

Ein Paket kann als Gruppierung verwandter Typen (Klassen, Schnittstellen, Aufzählungen und Anmerkungen) definiert werden, die Zugriffsschutz und Namensraumverwaltung bieten.

Einige der existierenden Pakete in Java sind −

Programmierer können ihre eigenen Pakete definieren, um Gruppen von Klassen/Schnittstellen usw. zu bündeln. Es empfiehlt sich, von Ihnen implementierte verwandte Klassen zu gruppieren, damit ein Programmierer leicht feststellen kann, dass die Klassen, Schnittstellen, Aufzählungen und Anmerkungen verwandt sind.

Da das Paket einen neuen Namensraum erstellt, gibt es keine Namenskonflikte mit Namen in anderen Paketen. Durch die Verwendung von Paketen ist es einfacher, eine Zugriffskontrolle bereitzustellen, und es ist auch einfacher, die zugehörigen Klassen zu finden.

Paket erstellen

Beim Erstellen eines Pakets sollten Sie einen Namen für das Paket wählen und ein Paket einschließen -Anweisung zusammen mit diesem Namen oben in jeder Quelldatei, die die Klassen, Schnittstellen, Aufzählungen und Anmerkungstypen enthält, die Sie in das Paket aufnehmen möchten.

Die Paketanweisung sollte die erste Zeile in der Quelldatei sein. In jeder Quelldatei kann es nur eine Paketanweisung geben, und sie gilt für alle Typen in der Datei.

Wenn keine Paketanweisung verwendet wird, werden die Klassen, Schnittstellen, Aufzählungen und Anmerkungstypen in das aktuelle Standardpaket gestellt.

Um die Java-Programme mit Paketanweisungen zu kompilieren, müssen Sie die Option -d wie unten gezeigt verwenden.

javac -d Destination_folder file_name.java

Dann wird ein Ordner mit dem angegebenen Paketnamen im angegebenen Ziel erstellt und die kompilierten Klassendateien werden in diesem Ordner abgelegt.

Beispiel

Sehen wir uns ein Beispiel an, das ein Paket namens animals erstellt . Es empfiehlt sich, Paketnamen mit Kleinbuchstaben zu verwenden, um Konflikte mit den Namen von Klassen und Schnittstellen zu vermeiden.

Das folgende Paketbeispiel enthält eine Schnittstelle namens animals

/* File name : Animal.java */
package animals;

interface Animal {
   public void eat();
   public void travel();
}

Lassen Sie uns nun die obige Schnittstelle im gleichen Paket animals implementieren −

package animals;
/* File name : MammalInt.java */

public class MammalInt implements Animal {

   public void eat() {
      System.out.println("Mammal eats");
   }

   public void travel() {
      System.out.println("Mammal travels");
   } 

   public int noOfLegs() {
      return 0;
   }

   public static void main(String args[]) {
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
} 

Kompilieren Sie nun die Java-Dateien wie unten gezeigt −

$ javac -d . Animal.java 
$ javac -d . MammalInt.java

Jetzt ein Paket/Ordner mit dem Namen Tiere wird im aktuellen Verzeichnis erstellt und diese Klassendateien werden darin abgelegt, wie unten gezeigt.

Sie können die Klassendatei innerhalb des Pakets ausführen und erhalten das unten gezeigte Ergebnis.

Mammal eats
Mammal travels

Das Importschlüsselwort

Wenn eine Klasse eine andere Klasse im selben Paket verwenden möchte, muss der Paketname nicht verwendet werden. Klassen im selben Paket finden einander ohne besondere Syntax.

Beispiel

Hier wird dem Gehaltsabrechnungspaket, das bereits „Employee“ enthält, eine Klasse namens „Boss“ hinzugefügt. Der Boss kann dann auf die Employee-Klasse verweisen, ohne das Payroll-Präfix zu verwenden, wie die folgende Boss-Klasse demonstriert.

package payroll;
public class Boss {
   public void payEmployee(Employee e) {
      e.mailCheck();
   }
}

Was passiert, wenn die Employee-Klasse nicht im Payroll-Paket enthalten ist? Die Boss-Klasse muss dann eine der folgenden Techniken verwenden, um auf eine Klasse in einem anderen Paket zu verweisen.

payroll.Employee
import payroll.*;
import payroll.Employee;

Hinweis − Eine Klassendatei kann beliebig viele import-Anweisungen enthalten. Die Importanweisungen müssen nach der Paketanweisung und vor der Klassendeklaration stehen.

Die Verzeichnisstruktur von Paketen

Zwei Hauptergebnisse treten auf, wenn eine Klasse in ein Paket platziert wird −

Hier ist eine einfache Möglichkeit, Ihre Dateien in Java zu verwalten −

Fügen Sie den Quellcode für eine Klasse, eine Schnittstelle, eine Aufzählung oder einen Anmerkungstyp in eine Textdatei ein, deren Name der einfache Name des Typs ist und deren Erweiterung .java ist .

Zum Beispiel −

// File Name :  Car.java
package vehicle;

public class Car {
   // Class implementation.   
}

Legen Sie nun die Quelldatei in ein Verzeichnis, dessen Name den Namen des Pakets widerspiegelt, zu dem die Klasse gehört −

....\vehicle\Car.java

Nun wären der qualifizierte Klassenname und Pfadname wie folgt:−

Im Allgemeinen verwendet ein Unternehmen seinen umgekehrten Internetdomänennamen für seine Paketnamen.

Beispiel − Der Internetdomänenname eines Unternehmens ist apple.com, dann würden alle seine Paketnamen mit com.apple beginnen. Jede Komponente des Paketnamens entspricht einem Unterverzeichnis.

Beispiel − Das Unternehmen hatte ein com.apple.computers-Paket, das eine Dell.java-Quelldatei enthielt, sie würde in einer Reihe von Unterverzeichnissen wie diesem enthalten sein −

....\com\apple\computers\Dell.java

Zum Zeitpunkt der Kompilierung erstellt der Compiler für jede darin definierte Klasse, Schnittstelle und Aufzählung eine andere Ausgabedatei. Der Basisname der Ausgabedatei ist der Name des Typs und seine Erweiterung ist .class .

Zum Beispiel −

// File Name: Dell.java
package com.apple.computers;

public class Dell {
}

class Ups {
}

Kompilieren Sie diese Datei nun wie folgt mit der Option -d −

$javac -d . Dell.java

Die Dateien werden wie folgt kompiliert −

.\com\apple\computers\Dell.class
.\com\apple\computers\Ups.class

Sie können alle Klassen oder Schnittstellen importieren, die in \com\apple\computers\ definiert sind wie folgt −

import com.apple.computers.*;

Wie die .java-Quelldateien sollten sich die kompilierten .class-Dateien in einer Reihe von Verzeichnissen befinden, die den Paketnamen widerspiegeln. Der Pfad zu den .class-Dateien muss jedoch nicht mit dem Pfad zu den .java-Quelldateien identisch sein. Sie können Ihre Quell- und Klassenverzeichnisse separat als −

anordnen
<path-one>\sources\com\apple\computers\Dell.java

<path-two>\classes\com\apple\computers\Dell.class

Auf diese Weise ist es möglich, anderen Programmierern Zugriff auf das Klassenverzeichnis zu gewähren, ohne Ihre Quellen preiszugeben. Sie müssen auch Quell- und Klassendateien auf diese Weise verwalten, damit der Compiler und die Java Virtual Machine (JVM) alle Typen finden können, die Ihr Programm verwendet.

Der vollständige Pfad zum Klassenverzeichnis, \classes, wird als Klassenpfad bezeichnet und mit der Systemvariablen CLASSPATH festgelegt. Sowohl der Compiler als auch die JVM erstellen den Pfad zu Ihren .class-Dateien, indem sie den Paketnamen zum Klassenpfad hinzufügen.

Angenommen, \classes ist der Klassenpfad und der Paketname ist com.apple.computers, dann suchen der Compiler und die JVM nach .class-Dateien in \classes\com\apple\computers.

Ein Klassenpfad kann mehrere Pfade umfassen. Mehrere Pfade sollten durch ein Semikolon (Windows) oder einen Doppelpunkt (Unix) getrennt werden. Standardmäßig durchsuchen der Compiler und die JVM das aktuelle Verzeichnis und die JAR-Datei mit den Java-Plattformklassen, sodass diese Verzeichnisse automatisch im Klassenpfad enthalten sind.

Setzen Sie die Systemvariable CLASSPATH

Um die aktuelle CLASSPATH-Variable anzuzeigen, verwenden Sie die folgenden Befehle in Windows und UNIX (Bourne-Shell) −

Um den aktuellen Inhalt der CLASSPATH-Variablen zu löschen, verwenden Sie −

Um die CLASSPATH-Variable zu setzen −


Java

  1. Python-Paket
  2. Letztes Java-Schlüsselwort
  3. Java-Instanz des Operators
  4. Verschachtelte statische Java-Klasse
  5. Anonyme Java-Klasse
  6. Java-Singleton-Klasse
  7. Java-Reflexion
  8. Java ObjectOutputStream-Klasse
  9. Java-Generika
  10. Java-Dateiklasse