Pakker i Java – typer, fordele og teknikker til at få adgang til pakker
Der er mapper eller mapper på vores computere til klassificering og tilgængelighed af forskellige filer, og i Java har vi pakker til det samme. I Java ligner pakker mapper, som hovedsageligt bruges til at organisere klasser og grænseflader.
Pakker hjælper os med at skrive bedre og håndterbar kode ved at forhindre navnekonflikter. Java giver nogle indbyggede pakker, som vi kan bruge, men vi kan også oprette vores egne (brugerdefinerede) pakker.
I denne artikel skal vi diskutere alt om pakker i Java sammen med deres syntakser og eksempler. Fremover i denne artikel skal vi lære –
- Pakker i Java
- Fordele ved at bruge pakker i Java
- Pakkertyper i Java
- Oprettelse af en pakke i Java
- Eksempel på Java-pakker
- Konventioner for pakkenavne
- Kompilering af en Java-pakke
- Udførelse af Java-pakkeprogram
- Adgang til en Java-pakke
- Underpakker i Java
- Vigtige punkter i Java-pakken
- Opdeling af klasser i pakker
Før du starter med pakker i Java, anbefales det stærkt, at du tager en hurtig revision på Java-grænsefladen med Techvidvan.
Hold dig opdateret med de nyeste teknologitrends, Deltag i TechVidvan på Telegram
Pakker i Java
En pakke er en samling af lignende typer Java-entiteter såsom klasser, grænseflader, underklasser, undtagelser, fejl og enums. En pakke kan også indeholde underpakker.
Fordele ved at bruge pakker i Java
Der er flere fordele ved at bruge Java-pakker, nogle af dem er som følger –
- Gør nem søgning eller lokalisering af klasser og grænseflader.
- Undgå navnekonflikter. For eksempel kan der være to klasser med navnet Student i to pakker, university.csdept.Student og college.itdept.Student
- Implementer dataindkapsling (eller dataskjulning).
- Giv kontrolleret adgang:De beskyttede adgangsspecifikationer og standard har adgangskontrol på pakkeniveau. Et medlem, der er erklæret som beskyttet, er tilgængeligt for klasser inden for den samme pakke og dens underklasser. Et medlem uden nogen adgangsspecifikation, der er standardspecifikation, er kun tilgængelig for klasser i den samme pakke.
- Genbrug klasserne i andre programmers pakker.
- Sammenlign klasserne i andre pakker unikt.
Bliv klogere på Access Specifiers i Java, som du ikke kendte til.
Vi har bare lagt lignende klasser i de samme pakker. Derefter importerer vi simpelthen klasserne fra eksisterende pakker gennem importerklæringen og bruger dem i vores program. En pakke giver adgang til nogle klasser, og andre opbevares til interne formål.
Bemærk:
- Pakkenavne er punktseparerede, f.eks. java.lang.String
- Pakker undgår navneområdekollision:En pakke kan ikke indeholde to klasser med de samme navne, men to forskellige pakker kan have en klasse med det samme navn.
- Det nøjagtige navn på klassen identificeres af strukturen af dens pakke.
Pakkertyper i Java
De kan opdeles i to kategorier:
- Java API-pakker eller indbyggede pakker og
- Brugerdefinerede pakker.
1. Java API-pakker eller indbyggede pakker
Java giver et stort antal klasser grupperet i forskellige pakker baseret på en bestemt funktionalitet.
Eksempler:
java.lang: Den indeholder klasser for primitive typer, strenge, matematiske funktioner, tråde og undtagelser.
java.util: Den indeholder klasser såsom vektorer, hashtabeller, datoer, kalendere osv.
java.io: Den har stream-klasser til input/output.
java.awt: Klasser til implementering af grafisk brugergrænseflade – vinduer, knapper, menuer osv.
java.net: Klasser til netværk
java. Applet: Klasser til oprettelse og implementering af applets
2. Brugerdefinerede pakker
Som navnet antyder, er disse pakker defineret af brugeren. Vi opretter en mappe, hvis navn skal være det samme som navnet på pakken. Så opretter vi en klasse inde i mappen.
Oprettelse af en pakke i Java
For at oprette en pakke vælger vi et pakkenavn og for at inkludere klasser, grænseflader, opregninger osv. inde i pakken, skriver vi pakken med dens navn øverst i hver kildefil.
Der kan kun være én pakkesætning i hver filtype. Hvis vi ikke skriver klasse, grænseflader inde i nogen pakke, vil de blive placeret i den aktuelle standardpakke.
Eksempel på Java-pakke
Vi kan oprette en Java-klasse inde i en pakke ved hjælp af enpakke søgeord.
package com.techvidvan.packagedemo; //package class Example { public static void main(String args[]) { System.out.println("Welcome to Techvidvan’s Java Tutorial"); } }
Output:
Velkommen til Techvidvans Java TutorialHvordan fungerer pakker i Java?
Navnene på pakker og mappestrukturen er tæt forbundet med hinanden.
For eksempel, hvis et pakkenavn er university.engineering.csedept, så er der tre mapper - university, engineering og csedept, sådan at csedept er til stede i engineering og engineering er til stede på universitetet.
Pakkeuniversitetet kan betragtes som en pakke på topniveau, mens ingeniørvidenskab er en underpakke af universitetet, og CSE-afdelingen er en underpakke af ingeniørvidenskab.
Pakkenavnekonventioner
Pakkenavne følger den omvendte rækkefølge af domænenavne, det vil sige org.techvidvan.tutorials. For eksempel på et universitet er den anbefalede konvention university.engineering.mech eller university.tech.it eller university.arts.history osv.
I følgende pakke:
java.util.Vector
- java er en pakke på øverste niveau
- til er en underpakke
- og vektor er en klasse, som er til stede i underpakken util.
Kompilering af en Java-pakke
Hvis du bruger en IDE (Integrated Development Environment), skal du følge syntaksen nedenfor for at kompilere pakken:
javac -d directory javaFileName
For eksempel
javac -d . Example.java
-d angiver destinationen, hvor den genererede klassefil skal findes. Du kan bruge et hvilket som helst mappenavn som /home (i tilfælde af Linux), C:/mappenavn (i tilfælde af Windows), osv. Hvis du ønsker, at pakken skal være til stede i den samme mappe, kan du bruge prikken ( . )
Udførelse af Java-pakkeprogram
Du skal bruge et fuldt kvalificeret navn f.eks. com.techvidvan.MyClass etc for at køre klassen.
Sådan kompileres:
javac -d . MyClass.java
Her -d repræsenterer destinationen. . repræsenterer den aktuelle mappe.
Sådan kører du:
java com.techvidvan.MyClass
Adgang til pakker eller klasser fra en anden pakke
Hvis vi vil have adgang til alle klasser og grænseflader i en eksisterende pakke, bruger vi import udmelding. Vi kan gøre det på tre forskellige måder:
- importpakke.*;
- importer pakke.klassenavn;
- fuldt kvalificeret navn.
1. Ved at bruge * efter importerklæringen kan vi få adgang til alle pakkens klasser, men ikke underpakkerne.
Syntaks:
For at importere alle klasserne:
import packageName.*;
Kode til at illustrere ovenstående koncept:
package com.techvidvan.packagedemo; //package class MyClass { public void printName(String name) { System.out.println(name); } }
package com.techvidvan.packagedemo1; import com.techvidvan.packagedemo.*; //importing all the classes public class MyClass1 { public static void main(String args[]) { // Initializing the String variable with a value String name = "Techvidvan's Java Tutorial"; // Creating an instance of class MyClass from another package. MyClass obj = new MyClass(); obj.printName(name); } }
Output:
Techvidvans Java Tutorial2. Ved at bruge et bestemt klassenavn efter importerklæringen kan vi få adgang til den pågældende klassepakke, men ikke underpakkerne.
Syntaks:
For at importere en bestemt klasse:
import packageName.className;
Kode til at illustrere ovenstående koncept:
package com.techvidvan.packagedemo; //package class MyClass { public void printName(String name) { System.out.println(name); } } package com.techvidvan.packagedemo1; import com.techvidvan.packagedemo.MyClass; //importing a particular class MyClass public class MyClass1 { public static void main(String args[]) { // Initializing the String variable with a value String name = "Techvidvan's Java Tutorial"; // Creating an instance of class MyClass from another package. MyClass obj = new MyClass(); obj.printName(name); } }
Output:
Techvidvans Java Tutorial3. Brug af et Fuldt kvalificeret navn betyder, at vi kan få adgang til den erklærede klasse af forskellige pakker uden at bruge importerklæringen. Men du skal bruge et fuldt kvalificeret navn, hver gang du får adgang til klassen eller grænsefladen, som er til stede i en anden pakke.
Denne type teknik bruges generelt, når to pakker har samme klassenavn, eksempel klasse Dato er til stede i begge pakker java.util og java.sql .
Kode til at illustrere ovenstående koncept:
package com.techvidvan.packagedemo; //package class MyClass { public void printName(String name) { System.out.println(name); } } package com.techvidvan.packagedemo1; public class MyClass1 { public static void main(String args[]) { // Initializing the String variable with a value String name = "Techvidvan's Java Tutorial"; // Using fully qualified name to access the class of different package com.techvidvan.packagedemo.MyClass obj = new com.techvidvan.packagedemo.MyClass(); obj.printName(name); } }
Output:
Techvidvans Java TutorialBemærk: Hvis du importerer en pakke, kan du ikke importere underpakkerne. Hvis du importerer en pakke, vil alle klasserne og grænsefladen for den pakke blive importeret, men underpakkernes klasser og grænseflader vil ikke være tilgængelige. Derfor skal du også importere underpakken.
Bemærk: Rækkefølgen af programmet skal være pakkenavn og derefter import sætning. Efter begge begynder klassen.
Underpakke i Java
Pakken, der findes i en pakke, kaldes underpakken . Den er oprettet for yderligere at kategorisere pakker.
For eksempel, hvis vi opretter en pakke inde i techvidvan-pakken, vil den blive kaldt underpakke.
Lad os sige, at vi har oprettet en anden pakke inde i techvidvan, og navnet på underpakken er tutorials. Så hvis vi opretter en klasse i denne underpakke, skal den have en pakkeerklæring på følgende måde:
package techvidvan.tutorials.classname;
Her er techvidvan en pakke, mens tutorials er en underpakke til techvidvan.
Standarden for at definere pakken er domain.company.package
eksempel com.techvidvan.tutorials.javatutorial eller org.iit.dao.
Kode til at forklare underpakke
package com.techvidvan.tutorials.javatutorial; class Demo { public static void main(String args[]) { System.out.println("Inside a sub-package"); } }
Sådan kompileres: javac -d. Demo.java
Sådan kører du: java com.techvidvan.tutorials.javatutorial
Output:
Inde i en underpakkeBrug af statisk import
'Statisk import' er en funktion introduceret i Java-programmeringssproget til Java-versioner 5 og nyere, som tillader felter og medlemmer af en klasse, der er erklæret som offentlige og statiske, at blive brugt direkte i Java-koden uden at angive navnet på den klasse, hvori disse offentlige statiske felter eller metoder er defineret.
Kode til at illustrere brugen af statisk importerklæring
// Note static keyword after import. package com.techvidvan.packagedemo; import static java.lang.System.*; class StaticImportDemo { public static void main(String args[]) { // We don't need to use 'System.out' // as we imported the package using static. out.println("TechVidvan"); } }
Output:
TechvidvanVigtige punkter om pakker i Java
- Hver klasse tilhører en pakke. Hvis du ikke nævner nogen pakke, flytter klasserne i filen til en speciel unavngiven pakke, som er den samme for alle de filer, der ikke tilhører en specificeret pakke.
- Flere klasser og grænseflader i en fil kan være en del af den samme pakke.
- Hvis pakkenavnet er angivet, skal mappenavnet matche pakkenavnet.
- Vi kan få adgang til de klasser, der er erklæret som offentlige i en anden pakke ved hjælp af:
import pakkenavn.klassenavn
Opdel dine klasser i pakker
Du tænker måske, hvordan du kan kategorisere dine klasser i pakker. Der er ingen standardmetode til at gøre dette, men du er to metoder, som du kan følge:
1. Divider efter lag
Dette er den første metode, hvor vi opdeler klasserne i henhold til applikationens lag. For eksempel, hvis din applikation indeholder et netværkslag, vil du oprette en pakke med navnet netværk.
Alle klasser, der er relateret til applikationens netværk, er placeret i netværkspakken.
2. Opdel efter applikationsfunktionalitet
Du kan også opdele dine klasser ud fra, hvilken del af applikationsfunktionaliteten de tilhører. Så hvis din applikation har et funktionsområde, der beregner renter, vil du oprette en Java-pakke med navnet rente.
Alle klasser, der direkte eller indirekte er relateret til renteberegningerne, vil indgå i den pakke. Hvis antallet af klasser i rodpakken bliver meget stort, kan de også flyttes til underpakkerne.
Oversigt
Pakker er afgørende for bedre styring og adgang til kode. Da vi kom til slutningen af vores selvstudie, lærte vi om pakkerne i Java i detaljer sammen med de to typer.
Vi dækkede også arbejdet, teknikkerne til at få adgang til pakkerne i andre pakker i Java, ved hjælp af syntaks og kodningseksempler. Dette vil helt sikkert være nyttigt for dit videre studium af Java-sproget.
Tak fordi du læste vores artikel. Hvis du har spørgsmål relateret til pakker i Java, så lad os det vide ved at skrive en kommentar nedenfor.
God læring 🙂