logo

Java pakotnes

Java pakotnes ir mehānisms, kas iekapsulē klašu apakšpakešu un saskarņu grupu. Pakas tiek izmantotas:

  • Novērsiet nosaukumu konfliktus, ļaujot klasēm ar vienādu nosaukumu pastāvēt dažādās pakotnēs, piemēram, college.staff.cse.Employee un college.staff.ee.Employee.
  • Atvieglojiet klašu saskarņu un citu komponentu atrašanas un lietošanas organizēšanu.
  • Nodrošiniet kontrolētu piekļuvi aizsargātajiem dalībniekiem, kas ir pieejami vienā pakotnē un pa apakšklasēm. Noklusējuma dalībnieki (bez piekļuves norādītāja) ir pieejami tikai tajā pašā pakotnē.

Grupējot saistītās klases paketēs, Java veicina datu iekapsulēšanu, padarot kodu atkārtoti lietojamu un vieglāk pārvaldāmu. Vienkārši importējiet vajadzīgo klasi no pakotnes, lai to izmantotu savā programmā.



Pielāgotu pakotņu izveide

1. darbība: Izveidojiet direktoriju, kurā mēs veidojam savas pakotnes un Java failus.

mkdir PROGRAMMĒŠANA

java masīva šķēle

2. darbība: Tagad mainiet direktoriju un galvenajā mapē izveidojiet citu mapi



CD PROGRAMMĒŠANA
mkdir JavaProgramming
cd JavaProgramming
mkdir masīvi

3. darbība: Tagad izveidojiet tukšu teksta failu un ierakstiet tālāk norādīto Java kodu un neaizmirstiet to saglabāt ar tādu pašu nosaukumu kā klasei ar paplašinājumu .java (TwoPointers.java)

TwoPointers klase.



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


Piezīme: Neaizmirstiet programmas failā pievienot pakotnes nosaukumu.

4. darbība: Tagad palaidiet programmu ar definēto mapes ceļu

javac srcJavaProgrammingarraysTwoPointers.java

java srcJavaProgrammingarraysTwoPointers.java

Izvade:

OutputJavaPackages' title=Darbojas programma ar mapes ceļu

Mapes struktūra:

Šis ir pielāgotas pakotnes Java vizuālais attēlojums zemāk esošajā attēlā. Vispirms mēs izveidojam mapi ar nosaukumu Progamming un tās iekšpusē izveidojam pakotni Javaprogramming un pēc tam izveidojam citu apakšpaketi, ko sauc masīvi . Pēc tam mēs tajā izveidojam Java klases failu, kas parādīts zemāk esošajā attēlā:

PackageInJava1' loading='lazy' title=Mapju struktūra

Darbs ar Java pakotnēm

Direktorija struktūra: Pakešu nosaukumi un direktoriju struktūras ir cieši saistītas. Piemēram, ja pakotnes nosaukums ir college.staff.cse, trīs direktoriji ir koledžas darbinieki un cse, kur cse ir personāla iekšienē un darbinieki koledžā.

Nosaukšanas konvencijas : pakotņu nosaukumi tiek rakstīti apgrieztā secībā domēna nosaukumiem, piem. org.geeksforgeeks.practice. Koledžā konvencija varētu būt:

  • college.tech.cse
  • college.tech.ee
  • koledžas.mākslas vēsture

Piemērs:

Internetbankas trūkumi

importēt java.util.*;

Šeit util ir apakšpakotne, kas izveidota Java pakotnes iekšpusē.  

Piekļuve nodarbībām komplektā

Java mēs varam importēt klases no pakotnes, izmantojot kādu no šīm metodēm:

1. Importējiet noteiktu klasi :

importēt java.util.Vector;

Tādējādi no pakotnes java.util tiek importēta tikai Vector klase.

2. Importēt visas klases no pakotnes :

importēt java.util.*;

Tas importē visas klases un saskarnes no pakotnes java.util, bet neietver apakšpaketes.

Piemērs: Importējiet Vector klasi

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

Izvade
[3 5 7] 

Piezīme:

  • Izmantojot importa pakotni.*; importē visas klases paketē, bet ne klases no savām apakšpaketēm.
  • Ja divām pakotnēm ir klases ar vienādu nosaukumu (piemēram, java.util.Date un my.package.Date), izmantojiet pilnībā kvalificētu nosaukumu, lai izvairītos no konfliktiem:

importēt java.util.Date;

importēt my.package.Date;

kā pārvērst char par virkni

Java pakotņu veidi

  • Iebūvētās paketes
  • Lietotāja definētas pakotnes

1. Iebūvētās paketes

Šīs pakotnes sastāv no liela skaita klašu, kas ir daļa no Java API .Dažas no visbiežāk izmantotajām iebūvētajām pakotnēm ir:

  • java.lang : Ietver valodas atbalsta klases (piemēram, klases, kas definē primitīvu datu tipu matemātikas darbības). Šī pakotne tiek automātiski importēta.
  • java.io: Satur klases ievades/izvades operāciju atbalstam.
  • java.util : Satur lietderības klases, kas ievieš datu struktūras, piemēram, saistīto sarakstu vārdnīcu un atbalstu; datuma/laika operācijām.
  • java.applet: Satur klases sīklietotņu izveidei.
  • java.aut: Ietver klases grafisko lietotāja interfeisu komponentu ieviešanai (piemēram, pogas ;izvēlnes utt.). 6)
  • java.net: Satur klases tīkla darbību atbalstam.

2. Lietotāja definētas pakotnes

Tās ir lietotāja definētas pakotnes.

1. Izveidojiet paketi:

Vispirms izveidojam direktoriju myPackage (nosaukumam jābūt tādam pašam kā pakotnes nosaukumam). Pēc tam direktorijā izveidojiet MyClass, kur pirmais paziņojums ir pakotņu nosaukumi.

Piemērs:

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


2. Izmantojiet nodarbību programmā:

Tagad mēs izmantosim MyClass klase mūsu 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);  } } 


Piezīme: MyClass.java ir jāsaglabā direktorijā myPackage, jo tā ir pakotnes daļa.  

Statiskā importēšana Java

Statiskā importēšana Java ir saistīta ar piekļuves vienkāršošanu statiskajiem dalībniekiem un atdala to no plašākas diskusijas par lietotāja definētajām pakotnēm.

Statiskā importēšana ir līdzeklis, kas ieviests Java programmēšanas valodā (5. un jaunākas versijas), kas ļauj dalībniekiem (laukiem un metodēm), kas klasē definēti kā publiski. statisks kas jāizmanto Java kodā, nenorādot klasi, kurā lauks ir definēts.

Piemērs:

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

Izvade
GeeksforGeeks 

Vārdu konfliktu risināšana

Ja divās pakotnēs ir klase ar tādu pašu nosaukumu (piemēram, java.util.Date un java.sql.Date), norādiet pilnu pakotnes nosaukumu, lai izvairītos no konfliktiem.

importēt java.util.*;
importēt java.sql.*;
//Un pēc tam izmantojiet Datuma klasi, tad mēs saņemsim kompilēšanas laika kļūdu:
Datums šodien; //ERROR-- java.util.Date vai java.sql.Date?

Kompilators nevarēs izdomāt, kuru datuma klasi mēs vēlamies. Šo problēmu var atrisināt, izmantojot īpašu importēšanas paziņojumu:

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

Ja mums ir vajadzīgas abas Datuma klases, mums ir jāizmanto pilns pakotnes nosaukums katru reizi, kad deklarējam jaunu šīs klases objektu. Piemēram:

java.util.Date deadLine = new java.util.Date();
java.sql.Date šodien = new java.sql.Date();

Linux īsceļi

Direktoriju struktūra un CLASSPATH

Pakešu nosaukumi atbilst direktoriju struktūrai. Piemēram, klase Circle pakotnē com.zzz.project1.subproject2 tiek saglabāta kā:

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

  • Šeit $BASE_DIR apzīmē pakotnes bāzes direktoriju.
  • "Punkts" pakotnes nosaukumā atbilst failu sistēmas apakšdirektorijam.
  • Bāzes direktorijs ( $BASE_DIR ) var atrasties jebkurā failu sistēmas vietā.
  • Tādējādi Java kompilators un izpildlaiks ir jāinformē par $BASE_DIR atrašanās vietu, lai noteiktu klases.
  • To panāk ar vides mainīgo, ko sauc CLASSPATH .
  • CLASSPATH ir līdzīgs citam vides mainīgajam PATH, ko komandas apvalks izmanto, lai meklētu izpildāmās programmas.

Notiek CLASSPATH iestatīšana

CLASSPATH var iestatīt jebkurā no šiem veidiem:

  • CLASSPATH var iestatīt pastāvīgi vidē Windows darbības

Dodieties uz Vadības panelis -> Sistēma -> Papildu -> Vides mainīgie.

  • Atlasiet “Sistēmas mainīgie”, lai lietotu CLASSPATH visiem sistēmas lietotājiem.
  • Atlasiet 'Lietotāja mainīgie', lai to lietotu tikai lietotājam, kas pašlaik ir pieteicies.
  • Rediģēt vai izveidot CLASSPATH : ja CLASSPATH jau pastāv, atlasiet to un noklikšķiniet uz Rediģēt vai, ja tā neeksistē, noklikšķiniet uz Jauns
  • Ievadiet CLASSPATH informāciju: laukā "Mainīgā nosaukums" ievadiet: "CLASSPATH" Laukā "Mainīgā vērtība" ievadiet direktorijus un JAR failus, atdalot tos ar semikolu.
  • Laukā Mainīgā vērtība ievadiet direktorijus un JAR failus, atdalot tos ar semikolu. Piemērs:

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

  • Punkts (.) apzīmē pašreizējo darba direktoriju.
  • Lai pārbaudītu pašreizējo CLASSPATH iestatījumu, izdodiet šādu komandu:

> IESTATĪT CLASSPATH

CLASSPATH var īslaicīgi iestatīt konkrētajai CMD čaulas sesijai, izdodot šādu komandu:

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

Tā vietā, lai izmantotu vides mainīgo CLASSPATH, varat arī izmantot, piemēram, javac un java komandu komandrindas opciju -classpath vai -cp

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

Lietotāja definētu pakotņu ilustrācija:  Pirmās pakotnes izveide: Faila nosaukums – ClassOne.java

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

Otrās pakotnes izveide: Faila nosaukums – ClassTwo.java

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

Izmantojot abas izveidotās pakotnes: Faila nosaukums – 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();  } } 

Tagad apskatiet gan pakotņu, gan testēšanas klases faila direktoriju struktūru:

Direktoriju struktūra' loading='lazy' title=

Piekļuves modifikatori pakotņu kontekstā

  • Publisks: Biedri arpublicmodifikatori ir pieejami no jebkuras vietas neatkarīgi no tā, vai piekļuves klase atrodas tajā pašā pakotnē vai nē .
  • Aizsargāts: Dalībnieki ar aizsargāto modifikatoru ir pieejami tajā pašā pakotnē Apakšklasēs
  • Noklusējums: Dalībnieki bez modifikatoriem ir pieejami tikai tajā pašā pakotnē
  • Privāts: Biedri arprivatemodifikatori ir pieejami tikai tajā pašā klasē. Tiem nevar piekļūt klases vienā pakotnes apakšklasēs vai dažādās pakotnēs.