Java >> Java tutorial >  >> Tag >> package

Pakker i Java:Hvordan oprettes og bruges pakker i Java?

En af de mest innovative funktioner i Java er konceptet med pakker. Pakker i Java er en måde at indkapsle en gruppe af klasser, grænseflader, opregninger, anmærkninger og underpakker. Begrebsmæssigt kan du tænke på java-pakker som ligner forskellige mapper på din computer. I denne tutorial vil vi dække det grundlæggende i pakker i Java.

Nedenfor er de emner, der er dækket i denne artikel:

  • Hvad er Pakke i Java?
  • Indbyggede pakker
  • Brugerdefinerede pakker
    • Oprettelse af en pakke i Java
    • Inkluderer en klasse i Java-pakke
    • Oprettelse af en klasse inde i pakken, mens du importerer en anden pakke
    • Brug af fuldt kvalificeret navn under import af en klasse
  • Statisk import i Java
  • Adgangsbeskyttelse i Java-pakker
  • Peger at huske

Hvad er pakke i Java?

Java-pakken er en mekanisme til at gruppere lignende typer klasser, grænseflader og underklasser samlet baseret på funktionalitet. Når software er skrevet i programmeringssproget Java, kan det være sammensat af hundredvis eller endda tusindvis af individuelle klasser. Det giver mening at holde tingene organiseret ved at placere relaterede klasser og grænseflader i pakker.

Brug af pakker under kodning giver en masse fordele som:

    • Genbrugelighed: Klasserne indeholdt i pakkerne til et andet program kan nemt genbruges
    • Navnekonflikter: Pakker hjælper os med at identificere en klasse entydigt, for eksempel kan vi have company.sales.Employee og company.marketing.Employee klasser
    • Kontrolleret adgang: Tilbyder adgangsbeskyttelse såsom beskyttede klasser, standardklasser og privat klasse
    • Dataindkapsling: De giver en måde at skjule klasser på, hvilket forhindrer andre programmer i at få adgang til klasser, der kun er beregnet til intern brug
    • Vedligeholdelse: Med pakker kan du organisere dit projekt bedre og nemt finde relaterede klasser

Det er en god praksis at bruge pakker, mens du koder i Java. Som programmør kan du nemt finde ud af de klasser, grænseflader, opregninger og annoteringer, der er relaterede. Vi har to typer pakker i java.

Pakketyper i Java

Baseret på om pakken er defineret af brugeren eller ej, er pakker opdelt i to kategorier:

  1. Indbyggede pakker
  2. Brugerdefinerede pakker

Indbyggede pakker

Indbyggede pakker eller foruddefinerede pakker er dem, der følger med som en del af JDK (Java Development Kit) for at forenkle opgaven som Java-programmør. De består af et stort antal foruddefinerede klasser og grænseflader, der er en del af Java API'er. Nogle af de almindeligt anvendte indbyggede pakker er java.lang, java.io, java.util, java.applet osv. Her er et simpelt program, der bruger en indbygget pakke.

package Edureka;
import java.util.ArrayList;

class BuiltInPackage {

    public static void main(String[] args) {

        ArrayList<Integer> myList = new ArrayList<>(3);

        myList.add(3);
        myList.add(2);
        myList.add(1);

        System.out.println("The elements of list are: " + myList);
    }
}

Output:

The elements of list are: [3, 2, 1]

ArrayList-klassen tilhører java.util-pakken. For at bruge det, skal vi importere pakken ved hjælp af importerklæringen. Den første linje i koden import java.util.ArrayList importerer java.util-pakken og bruger ArrayList-klassen, som er til stede i underpakken util.

Brugerdefinerede pakker

Brugerdefinerede pakker er dem, der er udviklet af brugere for at gruppere relaterede klasser, grænseflader og underpakker. Lad os ved hjælp af et eksempelprogram se, hvordan man opretter pakker, kompilerer Java-programmer inde i pakkerne og udfører dem.

Oprettelse af en pakke i Java

Oprettelse af en pakke i Java er en meget nem opgave. Vælg et navn til pakken, og medtag en pakke kommando som den første sætning i Java-kildefilen. Java-kildefilen kan indeholde de klasser, grænseflader, opregninger og anmærkningstyper, som du vil inkludere i pakken. For eksempel opretter følgende sætning en pakke med navnet Min pakke.

package MyPackage;

Pakkesætningen angiver ganske enkelt, hvilken pakke de definerede klasser tilhører..

Bemærk: Hvis du udelader pakkesætningen, sættes klassenavnene i standardpakken, som ikke har noget navn. Selvom standardpakken er fin til korte programmer, er den utilstrækkelig til rigtige applikationer.

Inkluderer en klasse i Java-pakke

For at oprette en klasse inde i en pakke, skal du erklære pakkenavnet som den første sætning i dit program. Medtag derefter klassen som en del af pakken. Men husk, at en klasse kun kan have én pakkeerklæring. Her er et simpelt program til at forstå konceptet.

package MyPackage;

public class Compare {
  int num1, num2;

  Compare(int n, int m) {
     num1 = n;
     num2 = m;
}
public void getmax(){
    if ( num1 > num2 ) {
    	System.out.println("Maximum value of two numbers is " + num1);
  }
    else {
    	System.out.println("Maximum value of two numbers is " + num2);
    }
}


public static void main(String args[]) {
		Compare current[] = new Compare[3];
		   
		current[1] = new Compare(5, 10);
	    current[2] = new Compare(123, 120);
	     
	      for(int i=1; i < 3 ; i++)
	    	  {
	    	  current[i].getmax();
	    	  }
	   }
}

Output:

Maximum value of two numbers is 10
Maximum value of two numbers is 123

Som du kan se, har jeg erklæret en pakke ved navn MyPackage og oprettet en klasse Sammenlign inde i den pakke. Java bruger filsystemmapper til at gemme pakker. Så dette program ville blive gemt i en fil som Compare.java og vil blive gemt i mappen med navnet MyPackage. Når filen bliver kompileret, vil Java oprette en .class fil og gem den i samme mappe. Husk, at navnet på pakken skal være det samme som det bibliotek, som denne fil er gemt under.

Du undrer dig måske over, hvordan du bruger denne Sammenlign-klasse fra en klasse i en anden pakke?

Oprettelse af en klasse inde i pakken, mens du importerer en anden pakke

Nå, det er ret simpelt. Du skal bare importere det. Når det er importeret, kan du få adgang til det ved dets navn. Her er et eksempelprogram, der demonstrerer konceptet.

package Edureka;
import MyPackage.Compare;

public class Demo{
	public static void main(String args[]) {
		int n=10, m=10;
        Compare current = new Compare(n, m);
        if(n != m) {
        	 current.getmax();
        }
        else {
        	System.out.println("Both the values are same");
        }   
}
}

Output:

Both the values are same

Jeg har først erklæret pakken Edureka , og importerede derefter klassen Sammenlign fra pakken MyPackage. Så rækkefølgen, når vi opretter en klasse inde i en pakke, mens vi importerer en anden pakke, er

  • Pakkeerklæring
  • Pakkeimport

Nå, hvis du ikke ønsker at bruge importerklæringen, er der et andet alternativ til at få adgang til en klassefil af pakken fra en anden pakke. Du kan bare bruge et fuldt kvalificeret navn, mens du importerer en klasse.

Brug af fuldt kvalificeret navn under import af en klasse

Her er et eksempel for at forstå konceptet. Jeg vil bruge den samme pakke, som jeg har erklæret tidligere på bloggen, Min pakke .

package Edureka;
public class Demo{
	public static void main(String args[]) {
		int n=10, m=11;
		//Using fully qualified name instead of import
        MyPackage.Compare current = new MyPackage.Compare(n, m);
        if(n != m) {
        	 current.getmax();
        }
        else {
        	System.out.println("Both the values are same");
        }   
}
}

Output:

Maximum value of two numbers is 11

I Demo-klassen har jeg i stedet for at importere pakken brugt det fuldt kvalificerede navn, såsom MyPackage.Compare at skabe genstanden for det. Da vi taler om import af pakker, kan du lige så godt tjekke konceptet med statisk import i Java.

Statisk import i Java

Statisk importfunktion blev introduceret i Java fra version 5. Det letter Java-programmøren at få direkte adgang til ethvert statisk medlem af en klasse uden at bruge det fuldt kvalificerede navn.

package MyPackage;
import static java.lang.Math.*; //static import
import static java.lang.System.*;// static import
public class StaticImportDemo {
	   public static void main(String args[]) {
	      double val = 64.0;
	      double sqroot = sqrt(val); // Access sqrt() method directly
	      out.println("Sq. root of " + val + " is " + sqroot);
	      //We don't need to use 'System.out
	   }
	}
Output:
Sq. root of 64.0 is 8.0

Selv om brug af statisk import involverer mindre kodning, kan overforbrug gøre programmet ulæseligt og uvedligeholdeligt. Lad os nu gå videre til det næste emne, adgangskontrol i pakker.

Adgangsbeskyttelse i Java-pakker

Du er måske opmærksom på forskellige aspekter af Javas adgangskontrolmekanisme og dens adgangsspecifikationer. Pakker i Java tilføjer endnu en dimension til adgangskontrol. Både klasser og pakker er et middel til dataindkapsling. Mens pakker fungerer som containere for klasser og andre underordnede pakker, fungerer klasser som containere for data og kode. På grund af dette samspil mellem pakker og klasser, adresserer Java-pakker fire kategorier af synlighed for klassemedlemmer:

  • Underklasser i samme pakke
  • Ikke-underklasser i samme pakke
  • Underklasser i forskellige pakker
  • Klasser, der hverken er i samme pakke eller underklasser

Tabellen nedenfor giver et reelt billede af, hvilken type adgang der er mulig, og hvilken der ikke er, når du bruger pakker i Java:

Privat Ingen ændring Beskyttet Offentlig

Samme klasse

Ja

Ja

Ja

Ja

Samme pakkeunderklasser

Nej

Ja

Ja

Ja

Samme pakke ikke-underklasser

Nej

Ja

Ja

Ja

Forskellige pakkeunderklasser

Nej

Nej

Ja

Ja

Forskellige pakker, der ikke er underklasser

Nej

Nej

Nej

Ja

Vi kan forenkle dataene i ovenstående tabel som følger:

  1. Alt, der er erklæret offentligt, kan tilgås hvor som helst
  2. Alt, der er erklæret privat, kan kun ses inden for den klasse
  3. Hvis adgangsspecifikation ikke er nævnt, er et element synligt for underklasser såvel som for andre klasser i samme pakke
  4. Til sidst kan alt erklæret beskyttet element ses uden for din nuværende pakke, men kun for klasser, der underklasser din klasse direkte

På denne måde giver Java-pakker adgangskontrol til klasserne. Nå, dette afslutter konceptet med pakker i Java. Her er nogle punkter, du bør huske på, når du bruger pakker i Java.

Punkter at huske

  • Hver klasse er en del af en eller anden pakke. Hvis du udelader pakkesætningen, sættes klassenavnene i standardpakken
  • En klasse kan kun have én pakkesætning, men den kan have mere end én importpakkesætning
  • Navnet på pakken skal være det samme som det bibliotek, hvorunder filen er gemt
  • Når du importerer en anden pakke, skal pakkedeklaration være den første erklæring, efterfulgt af pakkeimport

Tja, dette bringer os til slutningen af ​​denne artikel 'Pakker i Java'. Vi lærte, hvad en pakke er, og hvorfor vi skal bruge dem. Der er ingen tvivl om, at Java-pakken er en af ​​de vigtigste dele for effektive java-programmører. Det opgraderer ikke kun programmørens kodningsstil, men reducerer også en masse ekstra arbejde.

Hvis du fandt denne artikel om "Pakker i Java", så tjek Java Online Course af Edureka, en betroet online læringsvirksomhed med et netværk af mere end 250.000 tilfredse elever spredt over hele kloden. Vi er her for at hjælpe dig med hvert trin på din rejse, for at blive et udover dette java-interviewspørgsmål, kommer vi med et pensum, der er designet til studerende og professionelle, der ønsker at være Java-udvikler. Tilmeld dig vores Java-uddannelse i Cambridge i dag.


Java tag