logo

Java-paketit

Java-paketit ovat mekanismi, joka kapseloi ryhmän luokkien alipaketteja ja rajapintoja. Paketteja käytetään:

  • Estä nimiristiriidat sallimalla samannimisten luokkien olemassaolo eri paketeissa, kuten college.staff.cse.Employee ja college.staff.ee.Employee.
  • Helpota luokkien käyttöliittymien ja muiden komponenttien paikallistamisen ja käytön järjestämistä.
  • Tarjoa valvottu pääsy suojatuille jäsenille, jotka ovat käytettävissä samassa paketissa ja alaluokkien mukaan. Oletusjäsenet (ei käyttöoikeusmääritteitä) ovat käytettävissä vain samassa paketissa.

Ryhmittelemällä toisiinsa liittyvät luokat paketeiksi Java edistää tietojen kapselointia, mikä tekee koodista uudelleenkäytettävän ja helpommin hallittavan. Tuo vain haluttu luokka paketista käyttääksesi sitä ohjelmassasi.



Mukautettujen pakettien luominen

Vaihe 1: Luo hakemisto, johon luomme pakettimme ja Java-tiedostomme.

mkdir OHJELMOINTI

isäntä linux

Vaihe 2: Vaihda nyt hakemistoa ja luo toinen kansio pääkansioon



cd ohjelmointi
mkdir Java-ohjelmointi
cd Java-ohjelmointi
mkdir-taulukot

Vaihe 3: Luo nyt tyhjä tekstitiedosto ja kirjoita alla oleva Java-koodi ja älä unohda tallentaa sitä samalla nimellä kuin luokka .java-tunnisteella (TwoPointers.java)

TwoPointers-luokka.



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


Huomautus: Älä unohda lisätä paketin nimeä ohjelmatiedostoon.

Vaihe 4: Suorita nyt ohjelma määrittämällä kansion polku

javac srcJavaProgrammingarraysTwoPointers.java

java srcJavaProgrammingarraysTwoPointers.java

Lähtö:

OutputJavaPackages' title=Ajetaan ohjelmaa kansiopolulla

Kansiorakenne:

Tämä on visuaalinen esitys mukautetusta paketista Java-kielellä alla olevassa kuvassa. Ensin luodaan kansio nimeltä Progamming ja sen sisään luodaan paketti Javaprogramming ja sitten luodaan toinen alipaketti, joka on ns. taulukoita . Sitten luomme sen sisään Java-luokkatiedoston, joka näkyy alla olevassa kuvassa:

PackageInJava1' loading='lazy' title=Kansion rakenne

Java-pakettien työskentely

Hakemistorakenne: Pakettien nimet ja hakemistorakenteet liittyvät läheisesti toisiinsa. Jos paketin nimi on esimerkiksi college.staff.cse, niin kolme hakemistoa ovat college staff ja cse, joissa cse on henkilöstön sisällä ja henkilökunta yliopiston sisällä.

Nimeämissopimukset : Pakettien nimet kirjoitetaan käänteisessä järjestyksessä kuin verkkotunnukset, esim. org.geeksforgeeks.practice. Yliopistossa sopimus voisi olla:

  • college.tech.cse
  • college.tech.ee
  • college.art.history

Esimerkki:

silmukoille java

tuonti java.util.*;

Tässä util on Java-paketin sisällä luotu alipaketti.  

Pääsy luokkiin paketin sisällä

Javassa voimme tuoda luokkia paketista jommallakummalla seuraavista tavoista:

1. Tuo tietty luokka :

tuonti java.util.Vector;

Tämä tuo vain Vector-luokan java.util-paketista.

2. Tuo kaikki luokat paketista :

tuonti java.util.*;

Tämä tuo kaikki luokat ja liitännät java.util-paketista, mutta ei sisällä alipaketteja.

Esimerkki: Tuo Vector-luokka

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

Lähtö
[3 5 7] 

Huomautus:

  • Käyttämällä tuontipakettia.*; tuo kaikki paketin luokat, mutta ei luokkia alipaketteistaan.
  • Kun kahdella paketilla on samanniminen luokkia (esim. java.util.Date ja my.package.Date), käytä täydellistä nimeä ristiriitojen välttämiseksi:

tuonti java.util.Date;

tuo my.package.Date;

Java-pakettien tyypit

  • Sisäänrakennetut paketit
  • Käyttäjän määrittämät paketit

1. Sisäänrakennetut paketit

Nämä paketit koostuvat suuresta määrästä luokkia, jotka ovat osa Javaa API .Jotkin yleisesti käytetyistä sisäänrakennetuista paketeista ovat:

  • java.lang : Sisältää kielen tukiluokkia (esim. luokat, jotka määrittelevät primitiivisen tietotyypin matemaattisia operaatioita). Tämä paketti tuodaan automaattisesti.
  • java.io: Sisältää luokat syöttö/lähtötoimintojen tukemiseksi.
  • java.util : Sisältää hyödyllisyysluokkia, jotka toteuttavat tietorakenteita, kuten Linked List Dictionary ja tuki; Päivämäärä/aika -toiminnoille.
  • java.applet: Sisältää luokat sovelmien luomiseen.
  • java.aut: Sisältää luokat graafisten käyttöliittymien komponenttien toteuttamiseen (kuten painike ;valikot jne.). 6)
  • java.net: Sisältää luokkia verkkotoimintojen tukemiseen.

2. Käyttäjän määrittämät paketit

Nämä ovat käyttäjän määrittelemiä paketteja.

1. Luo paketti:

Ensin luodaan hakemisto myPackage (nimen tulee olla sama kuin paketin nimi). Luo sitten MyClass hakemistoon siten, että ensimmäinen lause on pakettien nimet.

Esimerkki:

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


2. Käytä luokkaa ohjelmassa:

Nyt käytämme MyClass luokkaa ohjelmassamme.

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


Huomautus: MyClass.java on tallennettava myPackage-hakemistoon, koska se on osa pakettia.  

Staattinen tuonti Javassa

Static Import Javassa on staattisten jäsenten käytön yksinkertaistamista ja erottaa sen laajemmasta keskustelusta käyttäjän määrittelemistä paketeista.

Staattinen tuonti on Java-ohjelmointikielessä (versiot 5 ja uudemmat) esitelty ominaisuus, joka sallii jäsenet (kentät ja menetelmät) määritellä luokassa julkisiksi staattinen käytettäväksi Java-koodissa määrittelemättä luokkaa, jossa kenttä on määritetty.

he ovat laulajia

Esimerkki:

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

Lähtö
GeeksforGeeks 

Nimiristiriitojen käsittely

Kun kaksi pakettia sisältää samannimisen luokan (esim. java.util.Date ja java.sql.Date), määritä paketin koko nimi ristiriitojen välttämiseksi.

tuonti java.util.*;
tuo java.sql.*;
//Ja käytä sitten Date-luokkaa, niin saamme käännösaikavirheen:
Päivämäärä tänään; //ERROR-- java.util.Date vai java.sql.Date?

Kääntäjä ei pysty selvittämään, minkä päivämääräluokan haluamme. Tämä ongelma voidaan ratkaista käyttämällä erityistä tuontilauseketta:

tuonti java.util.Date;
tuo java.sql.*;

Jos tarvitsemme molemmat Date-luokat, meidän on käytettävä koko paketin nimeä aina, kun ilmoitamme uuden objektin kyseisestä luokasta. Esimerkiksi:

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

ketjuta java-merkkijono

Hakemistorakenne ja CLASSPATH

Pakettien nimet vastaavat hakemistorakennetta. Esimerkiksi luokka Circle paketissa com.zzz.project1.subproject2 on tallennettu seuraavasti:

$BASE_DIR/com/zzz/projekti1/alaprojekti2/Circle.class

  • Tässä $BASE_DIR edustaa paketin perushakemistoa.
  • Paketin nimessä oleva "piste" vastaa tiedostojärjestelmän alihakemistoa.
  • Perushakemisto ( $BASE_DIR ) voi sijaita missä tahansa tiedostojärjestelmässä.
  • Siksi Java-kääntäjälle ja ajonaikaisuudelle on tiedotettava $BASE_DIR:n sijainnista luokat paikantamiseksi.
  • Se saavutetaan ympäristömuuttujalla nimeltä CLASSPATH .
  • CLASSPATH on samanlainen kuin toinen ympäristömuuttuja PATH, jota komentotulkki käyttää suoritettavien ohjelmien etsimiseen.

Asetetaan CLASSPATH

CLASSPATH voidaan asettaa jollakin seuraavista tavoista:

  • CLASSPATH voidaan asettaa pysyvästi ympäristössä vaiheet Windows on

Siirry kohtaan Ohjauspaneeli -> Järjestelmä -> Lisäasetukset -> Ympäristömuuttujat.

  • Valitse 'Järjestelmämuuttujat' ottaaksesi CLASSPATHin käyttöön kaikille järjestelmän käyttäjille.
  • Valitse "Käyttäjämuuttujat", jos haluat käyttää sitä vain tällä hetkellä kirjautuneelle käyttäjälle.
  • Muokkaa tai luo CLASSPATH: Jos CLASSPATH on jo olemassa, valitse se ja napsauta "Muokkaa" tai jos sitä ei ole, napsauta "Uusi"
  • Syötä CLASSPATH-tiedot: Kirjoita "Muuttujan nimi" -kenttään: "CLASSPATH" Syötä "Muuttujan arvo" -kenttään hakemistot ja JAR-tiedostot erotettuina puolipisteillä.
  • Kirjoita Muuttujan arvo -kenttään hakemistot ja JAR-tiedostot puolipisteillä erotettuina. Esimerkki:

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

  • Piste (.) edustaa nykyistä työhakemistoa.
  • Voit tarkistaa CLASSPATH:n nykyisen asetuksen antamalla seuraavan komennon:

> SET CLASSPATH

CLASSPATH voidaan asettaa väliaikaisesti kyseiselle CMD-komentotulkkiistunnolle antamalla seuraava komento:

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

CLASSPATH-ympäristömuuttujan sijaan voit käyttää esim. javac- ja java-komentojen komentorivin valitsinta -classpath tai -cp.

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

Kuva käyttäjän määrittelemistä paketeista:  Ensimmäisen paketin luominen: Tiedostonimi – ClassOne.java

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

Toisen paketin luominen: Tiedostonimi – ClassTwo.java

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

Molempia luotuja paketteja hyödyntäen: Tiedostonimi – 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();  } } 

Tarkastellaan nyt sekä pakettien että testausluokkatiedoston hakemistorakennetta:

Hakemistorakenne' loading='lazy' title=

Pääsymuokkaimet pakettien kontekstissa

  • Julkinen: Jäsenet kanssapublicmodifiereihin pääsee mistä tahansa riippumatta siitä, onko pääsyluokka samassa paketissa vai ei .
  • Suojattu: Jäsenet, joilla on suojattu muuntaja, ovat käytettävissä samassa paketissa Alaluokissa
  • Oletus: Jäsenet, joilla ei ole muokkausta, ovat käytettävissä vain samassa paketissa
  • Yksityinen: Jäsenet kanssaprivatemodifikaattorit ovat käytettävissä vain saman luokan sisällä. Saman paketin alaluokkien tai eri pakettien luokat eivät voi käyttää niitä.