11 Stimmen

Paket in Java

Wann verwenden wir eigentlich das Schlüsselwort package? Was bedeutet es?

Angenommen, ich schreibe den folgenden Code:

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

}

Was bewirkt dieses Paket? Ich erhalte eine masnun.class-Datei, die nicht ausgeführt wird. Ich bin neu in Java. Kann mir das bitte jemand erklären?

Gracias

16voto

Justian Meyer Punkte 3513

Da ich kein Fan dieser anderen Antworten bin, werde ich meine eigene schreiben.


Beispiele aus der Praxis:

Betrachten Sie ein "Paket" als eine einfache Möglichkeit für eine Java-Klasse, auf eine andere zu verweisen.

Nehmen wir an, ich habe eine große Kiste auf meinem Dachboden. Ich habe einen Taschenrechner, einen Zirkel, einen Winkelmesser usw. Ich kann diese Kiste beschriften MathTools .

Ein anderes Beispiel wäre, dass Sie alle Ihre Bilder in den Pictures Ordner in Ihren Dokumenten. Von dort aus können Sie sie aufteilen in Spring Break 2009 o [Insert Name Here]'s Party .

Was hat das mit Java zu tun? Nun, schauen wir uns die java.util Paket (Sie können es mit import java.util.*; . Sie haben ArrayLists, Strings, Random usw., die in den meisten Java-Programmen verwendet werden (allgemeine "Dienstprogramme", wenn Sie so wollen). Sie sind alle übersichtlich im gleichen Paket organisiert, so dass Programmierer sie leicht referenzieren können ( import java.util.*; ).


Einfache Anwendung:

Nehmen wir an, wir finden alle Dateien für einen kleinen Würfelsimulator in C:/Program Files/Java Project/my/proj/ (es ist wahrscheinlich, dass diese Datei auf Ihrem Computer nicht existiert, aber tun Sie einfach mal so).

Sie haben 3 Dateien: Main.java , Dice.java y DiceRoller.java . Alle sind unten aufgeführt:

.

"C:/Programmdateien/Java-Projekt/mein/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:/Programmdateien/Java-Projekt/mein/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:/Programmdateien/Java-Projekt/mein/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
        }
    }
}

.

Dinge, die man beachten sollte:

  • Main.java ist verpackt in my.proj.main
  • Dice.java ist verpackt in my.proj.sims
  • Main.java muss importieren my.proj.sims.Dice zu erstellen, um eine Dice Objekt und seine Methoden verwenden, weil es sich in einem anderen Paket befindet als Dice.java .
  • DiceRoller.java braucht nicht zu importieren my.proj.sims.Dice weil es sich im selben Paket befindet wie Dice.java und der Compiler wird die beiden automatisch miteinander verknüpfen.

.

Import ist ein Befehl zum Laden der Funktionalität einer Klasse in die aktuelle Datei. Betrachten Dice.java zum Beispiel. Damit es eine Random Objekt, das über die Methode nextInt() muss er die Klasse Random aus der Datei java.util.* paquet.

.

Sie werden vielleicht feststellen, dass einige Leute es vorziehen, die java.util.* anstelle von java.util.Random , java.util.ArrayList , usw. Was die * bedeutet im Wesentlichen, dass jede Klasse innerhalb java.util . Laufen import java.util.* importiert die Klassen Random, String, ArrayList, etc.

.

Ich hoffe, das klärt die Sache auf. Bitte denken Sie daran, hochzuvoten, wenn dies Ihnen geholfen hat :)

4voto

stacker Punkte 65961

Es ist sehr wahrscheinlich, dass eine Software Klassen mit den Namen Logger, Database, Connection, Table usw. hat. Packages trennen den Geltungsbereich dieser Klassen, so dass Sie keine Probleme mit doppelten Klassennamen haben.

Hier ein paar Beispiele:

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

Wenn Sie Klassen aus einem bestimmten Paket verwenden möchten, müssen Sie diese importieren, z. B.

import java.util.Date 

ou

import java.sql.Date

2voto

Truong Ha Punkte 9690

Auf diese Weise können Sie Ihre Quelldateien organisieren. Ein Paket enthält mehrere Klassendateien, eine Klassendatei enthält nur eine öffentliche Klasse, eine Klasse enthält mehrere Methoden und Variablen.

2voto

Jose Diaz Punkte 5273

Die Package-Anweisung in Java wird verwendet, um mehrere zusammengehörige Klassen zu gruppieren. Wenn Sie Klassen haben, die sich ausschließlich mit der Interaktion mit der Datenbank befassen, wäre es logisch, sie alle unter

com.example.myapp.persistence

Dies hat auch den Vorteil, dass die Namen voneinander getrennt sind. Denken Sie daran, dass zur Laufzeit ein Teil der Identität einer Java-Klasse ihr voll qualifizierter Name ist, d.h. der Klassenname, dem der Paketname vorangestellt ist, wie in

com.example.myapp.persistence.UserDAO

Wenn Ihre Anwendung mehr als ein paar Klassen beherbergen soll, ist es sowohl praktisch als auch eine gute Praxis, sie in Paketen zu organisieren

1voto

Chris Punkte 11472

"Pakete sind nichts anderes als die Art und Weise, wie wir Dateien in verschiedenen Verzeichnissen organisieren, je nach ihrer Funktionalität, ihrer Verwendbarkeit und der Kategorie, zu der sie gehören sollen." von: http://www.jarticles.com/package/package_eng.html

Im Grunde genommen sagen Sie in Ihrem Beispiel, dass die Klasse masnun ein Paket des Pakets masnun ist. In anderen Klassen könnten Sie diese Klasse also durch import masnun referenzieren, was die Klasse masnun importiert, die sich im Paket masnun befindet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X