logo

Pakiety Java

Pakiety w Javie to mechanizm hermetyzujący grupę klas podpakietów i interfejsów. Pakiety służą do:

  • Zapobiegaj konfliktom nazewnictwa, zezwalając na istnienie klas o tej samej nazwie w różnych pakietach, takich jak college.staff.cse.Employee i college.staff.ee.Employee.
  • Ułatw organizowanie lokalizowania i używania interfejsów klas i innych komponentów.
  • Zapewnij kontrolowany dostęp członkom chronionym, którzy są dostępni w ramach tego samego pakietu i według podklas. Domyślne elementy członkowskie (bez specyfikatora dostępu) są dostępne tylko w ramach tego samego pakietu.

Grupując powiązane klasy w pakiety, Java promuje enkapsulację danych, dzięki czemu kod można ponownie wykorzystać i łatwiej nim zarządzać. Po prostu zaimportuj żądaną klasę z pakietu, aby użyć jej w swoim programie.



Tworzenie niestandardowych pakietów

Krok 1: Utwórz katalog, w którym tworzymy nasze pakiety i pliki Java.

mkdir PROGRAMOWANIE

Pełna forma iskconu

Krok 2: Teraz zmień katalog i utwórz kolejny folder w folderze głównym



PROGRAMOWANIE CD
mkdir Programowanie Java
cd Programowanie w Javie
tablice mkdir

Krok 3: Teraz utwórz pusty plik tekstowy i napisz poniższy kod Java i nie zapomnij zapisać go pod tą samą nazwą, co klasa z rozszerzeniem .java (TwoPointers.java)

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


Notatka: Nie zapomnij dodać nazwy pakietu w pliku programu.

Krok 4: Teraz uruchom program ze zdefiniowaną ścieżką folderu

javac srcJavaProgrammingarraysTwoPointers.java

java srcJavaProgrammingarraysTwoPointers.java

Wyjście:

Wyjściowe pakiety Java' title=Uruchamiany program ze ścieżką folderu

Struktura folderów:

To jest wizualna reprezentacja niestandardowego pakietu w Javie na poniższym obrazku. Najpierw tworzymy folder o nazwie Progaming i w nim tworzymy pakiet Javaprogramming, a następnie tworzymy kolejny podpakiet o nazwie tablice . Następnie tworzymy w nim plik klasy Java, który pokazano na obrazku poniżej:

PakietInJava1' loading='lazy' title=Struktura folderów

Działanie pakietów Java

Struktura katalogów: Nazwy pakietów i struktury katalogów są ze sobą ściśle powiązane. Na przykład, jeśli nazwa pakietu to college.staff.cse, wówczas trzy katalogi to pracownicy uczelni, a cse, gdzie cse to personel, a personel to uczelnia.

Konwencje nazewnictwa : Nazwy pakietów są zapisywane w odwrotnej kolejności niż nazwy domen, np. org.geeksforgeeks.practice. Na studiach konwencja może wyglądać następująco:

  • college.tech.cse
  • college.tech.ee
  • uczelnia.historia.sztuki

Przykład:

importuj java.util.*;

Tutaj util jest podpakietem utworzonym w pakiecie Java.  

Dostęp do klas wewnątrz pakietu

W Javie możemy importować klasy z pakietu przy użyciu jednej z następujących metod:

usuwanie ostatniego zatwierdzenia gi

1. Zaimportuj konkretną klasę :

importuj java.util.Vector;

Spowoduje to zaimportowanie tylko klasy Vector z pakietu java.util.

2. Zaimportuj wszystkie klasy z pakietu :

importuj java.util.*;

Spowoduje to zaimportowanie wszystkich klas i interfejsów z pakietu java.util, ale nie obejmuje podpakietów.

Przykład: Zaimportuj klasę 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();  } } 

Wyjście
[3 5 7] 

Notatka:

  • Korzystanie z pakietu importu.*; importuje wszystkie klasy w pakiecie, ale nie klasy z jego podpakietów.
  • Jeśli dwa pakiety mają klasy o tej samej nazwie (np. java.util.Date i my.package.Date), użyj pełnej nazwy, aby uniknąć konfliktów:

importuj java.util.Date;

zaimportuj moją.pakiet.Datę;

Rodzaje pakietów Java

  • Wbudowane pakiety
  • Pakiety zdefiniowane przez użytkownika

1. Wbudowane pakiety

Pakiety te składają się z dużej liczby klas będących częścią Java API .Niektóre z powszechnie używanych wbudowanych pakietów to:

program macierzowy w języku c
  • java.lang : Zawiera klasy obsługujące język (np. klasy definiujące operacje matematyczne na podstawowych typach danych). Ten pakiet jest importowany automatycznie.
  • Java.io: Zawiera klasy obsługujące operacje wejścia/wyjścia.
  • java.util : Zawiera klasy narzędzi, które implementują struktury danych, takie jak słownik list połączonych i obsługują; dla operacji na dacie/godzinie.
  • java.applet: Zawiera klasy do tworzenia apletów.
  • java.au: Zawierają klasy do implementacji komponentów graficznych interfejsów użytkownika (takich jak przyciski, menu itp.). 6)
  • Java.net: Zawierają klasy wspierające operacje sieciowe.

2. Pakiety zdefiniowane przez użytkownika

Są to pakiety definiowane przez użytkownika.

1. Utwórz pakiet:

Najpierw tworzymy katalog myPackage (nazwa powinna być taka sama jak nazwa pakietu). Następnie utwórz MyClass w katalogu, w którym pierwszą instrukcją będą nazwy pakietów.

Przykład:

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


2. Użyj klasy w programie:

Teraz skorzystamy z MojaKlasa zajęcia w naszym programie.

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


Notatka: Plik MyClass.java musi zostać zapisany w katalogu myPackage, ponieważ jest częścią pakietu.  

Import statyczny w Javie

Statyczny import w Javie polega na uproszczeniu dostępu do statycznych elementów i oddziela go od szerszej dyskusji na temat pakietów zdefiniowanych przez użytkownika.

Import statyczny to funkcja wprowadzona w języku programowania Java (wersja 5 i nowsze), która umożliwia członkom (polom i metodom) zdefiniowanym w klasie jako publiczne statyczny do użycia w kodzie Java bez określania klasy, w której zdefiniowano pole.

Przykład:

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

Wyjście
GeeksforGeeks 

Obsługa konfliktów nazw

Jeśli dwa pakiety zawierają klasę o tej samej nazwie (np. java.util.Date i java.sql.Date), podaj pełną nazwę pakietu, aby uniknąć konfliktów.

importuj java.util.*;
importuj java.sql.*;
//Następnie użyj klasy Date, a wtedy otrzymamy błąd kompilacji:
Data dzisiaj ; //BŁĄD-- java.util.Date lub java.sql.Date?

Kompilator nie będzie w stanie określić, której klasy Date potrzebujemy. Ten problem można rozwiązać za pomocą określonej instrukcji importu:

importuj java.util.Date;
importuj java.sql.*;

Jeśli potrzebujemy obu klas Date, to za każdym razem, gdy deklarujemy nowy obiekt tej klasy, musimy użyć pełnej nazwy pakietu. Na przykład:

java.util.Date deadLine = nowa java.util.Date();
Java.sql.Date dzisiaj = nowa Java.sql.Date();

zestaw c++

Struktura katalogów i ŚCIEŻKA KLASY

Nazwy pakietów odpowiadają strukturze katalogów. Na przykład klasa Circle w pakiecie com.zzz.project1.subproject2 jest przechowywana jako:

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

  • Tutaj $BASE_DIR reprezentuje katalog podstawowy pakietu.
  • „Kropka” w nazwie pakietu odpowiada podkatalogowi systemu plików.
  • Katalog podstawowy ( $BASE_DIR ) może znajdować się w dowolnym miejscu systemu plików.
  • Dlatego kompilator Java i środowisko wykonawcze muszą zostać poinformowane o lokalizacji $BASE_DIR, aby zlokalizować klasy.
  • Realizowane jest to poprzez zmienną środowiskową o nazwie ŚCIEŻKA KLASY .
  • CLASSPATH jest podobna do innej zmiennej środowiskowej PATH, która jest używana przez powłokę poleceń do wyszukiwania programów wykonywalnych.

Ustawianie CLASSPATH

CLASSPATH można ustawić w jeden z następujących sposobów:

  • CLASSPATH można ustawić na stałe w środowisku kroków w systemie Windows

Przejdź do Panelu sterowania -> System -> Zaawansowane -> Zmienne środowiskowe.

  • Wybierz „Zmienne systemowe”, aby zastosować ścieżkę CLASSPATH dla wszystkich użytkowników w systemie.
  • Wybierz opcję „Zmienne użytkownika”, aby zastosować je tylko dla aktualnie zalogowanego użytkownika.
  • Edytuj lub utwórz CLASSPATH: Jeśli CLASSPATH już istnieje, wybierz ją i kliknij „Edytuj” lub jeśli nie istnieje, kliknij „Nowy”
  • Wprowadź szczegóły CLASSPATH: W polu „Nazwa zmiennej” wpisz: „CLASSPATH” W polu „Wartość zmiennej” wprowadź katalogi i pliki JAR oddzielone średnikami.
  • W polu „Wartość zmiennej” wprowadź katalogi i pliki JAR oddzielone średnikami. Przykład:

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

  • Kropka (.) reprezentuje bieżący katalog roboczy.
  • Aby sprawdzić bieżące ustawienie CLASSPATH, wydaj następujące polecenie:

> USTAW ŚCIEŻKĘ KLASY

CLASSPATH można ustawić tymczasowo dla tej konkretnej sesji powłoki CMD, wydając następujące polecenie:

> USTAW ŚCIEŻKĘ KLASY=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar

Zamiast używać zmiennej środowiskowej CLASSPATH, możesz także użyć opcji wiersza poleceń -classpath lub -cp poleceń javac i java

> java – ścieżka klasy c:javaprojectclasses com.abc.project1.subproject2.MyClass3

Ilustracja pakietów zdefiniowanych przez użytkownika:  Tworzenie naszego pierwszego pakietu: Nazwa pliku – ClassOne.java

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

Tworzenie naszego drugiego pakietu: Nazwa pliku – ClassTwo.java

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

Wykorzystanie obu utworzonych pakietów: Nazwa pliku – 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();  } } 

Teraz spójrz na strukturę katalogów obu pakietów i pliku klasy testowej:

Struktura katalogów' loading='lazy' title=

Modyfikatory dostępu w kontekście pakietów

  • Publiczny: Członkowie zpublicmodyfikator są dostępne z dowolnego miejsca, niezależnie od tego, czy klasa uzyskująca dostęp znajduje się w tym samym pakiecie, czy nie .
  • Chroniony: Elementy członkowskie z chronionym modyfikatorem są dostępne w ramach tego samego pakietu w podklasach
  • Domyślny: Elementy członkowskie bez modyfikatora są dostępne tylko w ramach tego samego pakietu
  • Prywatny: Członkowie zprivatemodyfikator są dostępne tylko w obrębie tej samej klasy. Nie mogą uzyskać do nich dostępu klasy z podklas tego samego pakietu lub z różnych pakietów.