logo

Java-paket

Paket i Java är en mekanism som kapslar in en grupp av klassunderpaket och gränssnitt. Paketen används för:

  • Förhindra namnkonflikter genom att tillåta klasser med samma namn att finnas i olika paket som college.staff.cse.Employee och college.staff.ee.Employee.
  • Gör det lättare att organisera lokalisera och använda klassgränssnitt och andra komponenter.
  • Ge kontrollerad åtkomst för skyddade medlemmar som är tillgängliga inom samma paket och av underklasser. Standardmedlemmar (ingen åtkomstspecifikation) är endast tillgängliga inom samma paket.

Genom att gruppera relaterade klasser i paket främjar Java datainkapsling, vilket gör koden återanvändbar och lättare att hantera. Importera helt enkelt önskad klass från ett paket för att använda den i ditt program.



Skapa anpassade paket

Steg 1: Skapa en katalog där vi skapar våra paket och Java-filer.

mkdir PROGRAMMERING

exempel på java-kod

Steg 2: Ändra nu katalogen och skapa en annan mapp i huvudmappen



CD-PROGRAMMERING
mkdir JavaProgramming
cd JavaProgrammering
mkdir-matriser

Steg 3: Skapa nu en tom textfil och skriv Java-koden nedan och glöm inte att spara den med samma namn som klassen med .java-tillägget (TwoPointers.java)

TwoPointers-klass.



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


Notera: Glöm inte att lägga till paketnamnet i programfilen.

Steg 4: Kör nu programmet med den definierade mappsökvägen

javac srcJavaProgrammingarraysTwoPointers.java

java srcJavaProgrammingarraysTwoPointers.java

Produktion:

OutputJavaPackages' title=Kör program med mappsökväg

Mappstruktur:

Detta är den visuella representationen av ett anpassat paket i Java i bilden nedan. Först skapar vi en mapp som heter Progamming och inuti den skapar vi ett paket Javaprogramming och skapar sedan ytterligare ett underpaket som heter matriser . Sedan skapar vi en Java-klassfil inuti den som visas i bilden nedan:

PackageInJava1' loading='lazy' title=Mappstruktur

Arbeta med Java-paket

Katalogstruktur: Paketnamn och katalogstrukturer är nära relaterade. Till exempel om ett paketnamn är college.staff.cse så är tre kataloger högskolepersonal och cse där cse är inuti personal och personal finns inom college.

Namnkonventioner : Paketnamn skrivs i omvänd ordning av domännamn t.ex. org.geeksforgeeks.practice. På ett college kan konventionen vara:

  • college.tech.cse
  • college.tech.ee
  • högskola.konsthistoria

Exempel:

importera java.util.*;

Här util är ett underpaket skapat inuti java-paketet.  

Få tillgång till klasser i ett paket

I Java kan vi importera klasser från ett paket med någon av följande metoder:

1. Importera en specifik klass :

importera java.util.Vector;

Detta importerar endast klassen Vector från paketet java.util.

2. Importera alla klasser från ett paket :

importera java.util.*;

Detta importerar alla klasser och gränssnitt från java.util-paketet men inkluderar inte underpaket.

Exempel: Importera klassen 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();  } } 

Produktion
[3 5 7] 

Notera:

  • Använder importpaket.*; importerar alla klasser i ett paket men inte klasser från dess underpaket.
  • När två paket har klasser med samma namn (t.ex. java.util.Date och my.package.Date) använd det fullständiga namnet för att undvika konflikter:

importera java.util.Date;

oj i java

importera mitt.paket.datum;

Typer av Java-paket

  • Inbyggda paket
  • Användardefinierade paket

1. Inbyggda paket

Dessa paket består av ett stort antal klasser som är en del av Java API . Några av de vanligaste inbyggda paketen är:

  • java.lang : Innehåller språkstödsklasser (t.ex. klasser som definierar matematiska operationer för primitiva datatyper). Detta paket importeras automatiskt.
  • java.io: Innehåller klasser för att stödja in-/utgångsoperationer.
  • java.util : Innehåller verktygsklasser som implementerar datastrukturer som Linked List Dictionary och support; för datum/tid operationer.
  • java.applet: Innehåller klasser för att skapa applets.
  • java.aut: Innehåller klasser för att implementera komponenterna för grafiska användargränssnitt (som knapp ;menyer etc). 6)
  • java.net: Innehåller klasser för att stödja nätverksoperationer.

2. Användardefinierade paket

Det här är paketen som definieras av användaren.

1. Skapa paketet:

Först skapar vi en katalog myPackage (namnet ska vara samma som namnet på paketet). Skapa sedan MyClass i katalogen med den första satsen som paketnamnen.

Exempel:

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


2. Använd klassen i programmet:

Nu kommer vi att använda Min Klass klass i vårt program.

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


Notera: MyClass.java måste sparas i myPackage-katalogen eftersom det är en del av paketet.  

Statisk import i Java

Statisk import i Java handlar om att förenkla åtkomsten till statiska medlemmar och skiljer den från den bredare diskussionen om användardefinierade paket.

Statisk import är en funktion som introduceras i programmeringsspråket Java (version 5 och högre) som tillåter medlemmar (fält och metoder) definierade i en klass som offentliga statisk ska användas i Java-kod utan att ange i vilken klass fältet är definierat.

Exempel:

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

Produktion
GeeksforGeeks 

Hantering av namnkonflikter

När två paket innehåller en klass med samma namn (t.ex. java.util.Date och java.sql.Date) ange det fullständiga paketnamnet för att undvika konflikter.

importera java.util.*;
importera java.sql.*;
//Och använd sedan Date class så får vi ett kompileringsfel:
Datum idag; //ERROR-- java.util.Date eller java.sql.Date?

Kompilatorn kommer inte att kunna ta reda på vilken Date-klass vi vill ha. Det här problemet kan lösas genom att använda en specifik importsats:

rund matematik java

importera java.util.Date;
importera java.sql.*;

Om vi ​​behöver båda Date-klasserna måste vi använda ett fullständigt paketnamn varje gång vi deklarerar ett nytt objekt för den klassen. Till exempel:

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

spara youtube video vlc

Katalogstruktur och CLASSPATH

Paketnamnen motsvarar en katalogstruktur. Till exempel lagras en klasscirkel i paketet com.zzz.project1.subproject2 som:

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

  • Här $BASE_DIR representerar paketets baskatalog.
  • "Pricken" i paketnamnet motsvarar en underkatalog till filsystemet.
  • Baskatalogen ( $BASE_DIR ) kan finnas var som helst i filsystemet.
  • Därför måste Java-kompilatorn och körtiden informeras om platsen för $BASE_DIR för att lokalisera klasserna.
  • Det åstadkoms av en miljövariabel som kallas KLASSVÄG .
  • CLASSPATH liknar en annan miljövariabel PATH som används av kommandoskalet för att söka efter de körbara programmen.

Ställa in CLASSPATH

CLASSPATH kan ställas in på något av följande sätt:

  • CLASSPATH kan ställas in permanent i den miljö som stegen i Windows är

Gå till Kontrollpanelen -> System -> Avancerat -> Miljövariabler.

  • Välj "Systemvariabler" för att tillämpa CLASSPATH för alla användare på systemet.
  • Välj "Användarvariabler" för att tillämpa den endast för den för närvarande inloggade användaren.
  • Redigera eller skapa CLASSPATH: Om CLASSPATH redan finns, välj den och klicka på "Redigera" eller klicka på "Ny" om den inte finns.
  • Ange CLASSPATH-detaljer: I fältet 'Variabelnamn' anger du: 'CLASSPATH' I fältet 'Variabelvärde' anger du katalogerna och JAR-filerna separerade med semikolon.
  • I fältet 'Variabelvärde' anger du katalogerna och JAR-filerna separerade med semikolon. Exempel:

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

  • Punkten (.) representerar den aktuella arbetskatalogen.
  • För att kontrollera den aktuella inställningen för CLASSPATH, utfärda följande kommando:

> STÄLL IN KLASSVÄG

CLASSPATH kan ställas in tillfälligt för just den CMD-skalsessionen genom att utfärda följande kommando:

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

Istället för att använda miljövariabeln CLASSPATH kan du också använda kommandoradsalternativet -classpath eller -cp för javac- och java-kommandona till exempel

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

Illustration av användardefinierade paket:  Skapar vårt första paket: Filnamn – ClassOne.java

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

Skapar vårt andra paket: Filnamn – ClassTwo.java

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

Använder båda de skapade paketen: Filnamn – 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();  } } 

Ta nu en titt på katalogstrukturen för både paketen och testklassfilen:

Katalogstruktur' loading='lazy' title=

Åtkomstmodifierare i paketsammanhang

  • Offentlig: Medlemmar medpublicmodifierare är tillgängliga från var som helst oavsett om åtkomstklassen är i samma paket eller inte .
  • Skyddad: Medlemmar med den skyddade modifieraren är tillgängliga inom samma paket i underklasser
  • Standard: Medlemmar utan modifierare är endast tillgängliga inom samma paket
  • Privat: Medlemmar medprivatemodifierare är endast tillgängliga inom samma klass. De kan inte nås av klasser i samma paketunderklasser eller olika paket.