logo

Java balíčky

Balíčky v Javě jsou mechanismem, který zapouzdřuje skupinu dílčích balíčků tříd a rozhraní. Balíčky se používají pro:

  • Předcházejte konfliktům názvů tím, že povolíte existenci tříd se stejným názvem v různých balíčcích, jako je college.staff.cse.Employee a college.staff.ee.Employee.
  • Usnadněte si organizaci vyhledávání a používání rozhraní tříd a dalších komponent.
  • Poskytněte řízený přístup pro chráněné členy, kteří jsou přístupní v rámci stejného balíčku a podle podtříd. Výchozí členové (bez specifikátoru přístupu) jsou přístupní pouze v rámci stejného balíčku.

Seskupením souvisejících tříd do balíčků Java podporuje zapouzdření dat, díky čemuž je kód znovu použitelný a snáze se s ním manipuluje. Jednoduše importujte požadovanou třídu z balíčku a použijte ji ve svém programu.



Vytváření vlastních balíčků

Krok 1: Vytvořte adresář, ve kterém vytvoříme naše balíčky a soubory Java.

mkdir PROGRAMOVÁNÍ

jak vybrat sloupce z různých tabulek v sql

Krok 2: Nyní změňte adresář a vytvořte další složku v hlavní složce



PROGRAMOVÁNÍ CD
mkdir JavaProgramming
cd JavaProgramming
pole mkdir

Krok 3: Nyní vytvořte prázdný textový soubor a napište níže uvedený Java kód a nezapomeňte jej uložit pod stejným názvem jako třída s příponou .java (TwoPointers.java)

Třída TwoPointers.



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');  } } 


Poznámka: Do souboru programu nezapomeňte přidat název balíčku.

Krok 4: Nyní spusťte program s definovanou cestou složky

javac srcJavaProgrammingarraysTwoPointers.java

java srcJavaProgrammingarraysTwoPointers.java

výstup:

Výstup JavaPackages' title=Spuštěný program s cestou ke složce

Struktura složky:

Toto je vizuální znázornění vlastního balíčku v Javě na obrázku níže. Nejprve vytvoříme složku s názvem Progamming a v ní vytvoříme balíček Javaprogramming a poté vytvoříme další podbalíček, který se nazývá pole . Poté v něm vytvoříme soubor třídy Java, který je znázorněn na obrázku níže:

PackageInJava1' loading='lazy' title=Struktura složek

Práce s Java balíčky

Struktura adresáře: Názvy balíčků a adresářové struktury spolu úzce souvisí. Pokud je například název balíčku college.staff.cse, pak tři adresáře jsou zaměstnanci školy a cse, kde cse je uvnitř zaměstnanců a zaměstnanci jsou uvnitř školy.

Konvence pojmenování : Názvy balíčků se zapisují v opačném pořadí než názvy domén, např. org.geeksforgeeks.practice. Na vysoké škole může být konvence:

  • college.tech.cse
  • college.tech.ee
  • vysokoškolské.historie umění

Příklad:

import java.util.*;

Zde util je dílčí balíček vytvořený uvnitř balíčku java.  

Přístup k třídám uvnitř balíčku

V Javě můžeme importovat třídy z balíčku pomocí jedné z následujících metod:

1. Importujte konkrétní třídu :

import java.util.Vector;

Tím se importuje pouze třída Vector z balíčku java.util.

2. Importujte všechny třídy z balíčku :

import java.util.*;

To importuje všechny třídy a rozhraní z balíčku java.util, ale nezahrnuje dílčí balíčky.

Příklad: Importujte třídu Vector

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();  } } 

Výstup
[3 5 7] 

Poznámka:

  • Použití importního balíčku.*; importuje všechny třídy v balíčku, ale ne třídy z jeho dílčích balíčků.
  • Pokud mají dva balíčky třídy se stejným názvem (např. java.util.Date a my.package.Date), použijte plně kvalifikovaný název, abyste předešli konfliktům:

import java.util.Date;

integer double java

import my.package.Date;

Typy balíčků Java

  • Vestavěné balíčky
  • Uživatelsky definované balíčky

1. Vestavěné balíčky

Tyto balíčky se skládají z velkého počtu tříd, které jsou součástí Javy API Některé z běžně používaných vestavěných balíčků jsou:

  • java.lang : Obsahuje třídy jazykové podpory (např. třídy, které definují primitivní datové typy matematických operací). Tento balíček je automaticky importován.
  • java.io: Obsahuje třídy pro podporu operací vstupu/výstupu.
  • java.util : Obsahuje pomocné třídy, které implementují datové struktury jako Linked List Dictionary a podporu; pro operace Datum/Čas.
  • java.applet: Obsahuje třídy pro vytváření apletů.
  • java.aut: Obsahují třídy pro implementaci komponent pro grafická uživatelská rozhraní (jako tlačítko ;nabídky atd.). 6)
  • java.net: Obsahuje třídy pro podporu síťových operací.

2. Uživatelem definované balíčky

Jedná se o balíčky, které definuje uživatel.

1. Vytvořte balíček:

Nejprve vytvoříme adresář myPackage (název by měl být stejný jako název balíčku). Potom vytvořte MyClass v adresáři s prvním příkazem, který bude obsahovat názvy balíčků.

Příklad:

Java
package myPackage; public class MyClass {  public void getNames(String s)  {   System.out.println(s);   } } 


2. Použijte třídu v programu:

Nyní použijeme Moje třída třídy v našem programu.

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);  } } 


Poznámka: MyClass.java musí být uložena v adresáři myPackage, protože je součástí balíčku.  

Statický import v Javě

Statický import v Javě je o zjednodušení přístupu ke statickým členům a odděluje jej od širší diskuse o uživatelsky definovaných balíčcích.

Statický import je funkce představená v programovacím jazyce Java (verze 5 a vyšší), která umožňuje členům (polím a metodám) definovat ve třídě jako veřejné statický k použití v kódu Java bez určení třídy, ve které je pole definováno.

Příklad:

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');  } } 

Výstup
GeeksforGeeks 

Řešení konfliktů jmen

Pokud dva balíčky obsahují třídu se stejným názvem (např. java.util.Date a java.sql.Date), zadejte úplný název balíčku, abyste předešli konfliktům.

import java.util.*;
import java.sql.*;
//A pak použijte třídu Date, pak dostaneme chybu při kompilaci:
Datum dnes; //CHYBA-- java.util.Date nebo java.sql.Date?

Kompilátor nebude schopen zjistit, jakou třídu Date chceme. Tento problém lze vyřešit pomocí konkrétního příkazu importu:

kde najdu nastavení prohlížeče

import java.util.Date;
import java.sql.*;

Pokud potřebujeme obě třídy Date, musíme použít úplný název balíčku pokaždé, když deklarujeme nový objekt této třídy. Například:

java.util.Date deadLine = new java.util.Date();
java.sql.Date today = new java.sql.Date();

znak na řetězec v jazyce Java

Struktura adresáře a CLASSPATH

Názvy balíčků odpovídají adresářové struktuře. Například třída Circle v balíčku com.zzz.project1.subproject2 je uložena jako:

$BASE_DIR/com/zzz/project1/subproject2/Circle.class

  • Zde $BASE_DIR představuje základní adresář balíčku.
  • „Tečka“ v názvu balíčku odpovídá podadresáři systému souborů.
  • Základní adresář ( $BASE_DIR ) může být umístěn kdekoli v systému souborů.
  • Proto musí být kompilátor Java a runtime informováni o umístění $BASE_DIR, aby bylo možné třídu najít.
  • Toho je dosaženo pomocí proměnné prostředí nazvané CLASSPATH .
  • CLASSPATH je podobná jiné proměnné prostředí PATH, kterou používá příkazový shell k hledání spustitelných programů.

Nastavení CLASSPATH

CLASSPATH lze nastavit kterýmkoli z následujících způsobů:

  • CLASSPATH lze trvale nastavit v prostředí, jak je to ve Windows

Přejděte na Ovládací panely -> Systém -> Upřesnit -> Proměnné prostředí.

  • Chcete-li použít CLASSPATH pro všechny uživatele v systému, vyberte 'System Variables'.
  • Vyberte 'Uživatelské proměnné', chcete-li je použít pouze pro aktuálně přihlášeného uživatele.
  • Upravit nebo vytvořit CLASSPATH: Pokud CLASSPATH již existuje, vyberte jej a klikněte na 'Upravit' nebo pokud neexistuje, klikněte na 'Nový'
  • Zadejte podrobnosti CLASSPATH: Do pole 'Název proměnné' zadejte: 'CLASSPATH' Do pole 'Hodnota proměnné' zadejte adresáře a soubory JAR oddělené středníky.
  • Do pole 'Hodnota proměnné' zadejte adresáře a soubory JAR oddělené středníky. Příklad:

.c:javaprojectclasses;d:tomcatlibservlet-api.jar

  • tečka (.) představuje aktuální pracovní adresář.
  • Chcete-li zkontrolovat aktuální nastavení CLASSPATH, zadejte následující příkaz:

> NASTAVIT CLASSPATH

CLASSPATH lze dočasně nastavit pro tuto konkrétní relaci shellu CMD zadáním následujícího příkazu:

> SET CLASSPATH=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar

Namísto použití proměnné prostředí CLASSPATH můžete také použít například volbu příkazového řádku -classpath nebo -cp příkazů javac a java

> java –classpath c:javaprojectclasses com.abc.project1.subproject2.MyClass3

Ilustrace uživatelsky definovaných balíčků:  Vytváření našeho prvního balíčku: Název souboru – ClassOne.java

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

Vytváříme náš druhý balíček: Název souboru – ClassTwo.java

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

Využití obou vytvořených balíčků: Název souboru – 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();  } } 

Nyní se podívejte na adresářovou strukturu jak balíčků, tak souboru testovací třídy:

Struktura adresáře' loading='lazy' title=

Přístup k modifikátorům v kontextu balíčků

  • Veřejnost: Členové spublicmodifikátor jsou přístupné odkudkoli bez ohledu na to, zda je přistupující třída ve stejném balíčku nebo ne .
  • Chráněný: Členové s chráněným modifikátorem jsou přístupní v rámci stejného balíčku In podtříd
  • Výchozí: Členové bez modifikátoru jsou přístupní pouze v rámci stejného balíčku
  • soukromé: Členové sprivatemodifikátor jsou přístupné pouze v rámci stejné třídy. Nemohou k nim přistupovat třídy ve stejných podtřídách balíčků nebo různých balíčcích.