logo

Java-pakker

Pakker i Java er en mekanisme som innkapsler en gruppe klasseunderpakker og grensesnitt. Pakkene brukes til:

  • Forhindre navnekonflikter ved å la klasser med samme navn eksistere i forskjellige pakker som college.staff.cse.Employee og college.staff.ee.Employee.
  • Gjør det enklere å organisere finne og bruke klassegrensesnitt og andre komponenter.
  • Gi kontrollert tilgang for beskyttede medlemmer som er tilgjengelige innenfor samme pakke og av underklasser. Standardmedlemmer (ingen tilgangsspesifikasjoner) er kun tilgjengelige innenfor samme pakke.

Ved å gruppere relaterte klasser i pakker fremmer Java datainnkapsling som gjør koden gjenbrukbar og enklere å administrere. Bare importer ønsket klasse fra en pakke for å bruke den i programmet ditt.



Opprette tilpassede pakker

Trinn 1: Lag en katalog der vi lager våre pakker og Java-filer.

mkdir PROGRAMMERING

generisitet i java

Trinn 2: Endre nå katalogen og lag en annen mappe inne i hovedmappen



CD-PROGRAMMERING
mkdir JavaProgramming
cd Java-programmering
mkdir-matriser

Trinn 3: Lag nå en tom tekstfil og skriv Java-koden nedenfor, og ikke glem å lagre den med samme navn som klassen med .java-utvidelsen (TwoPointers.java)

TwoPointers-klasse.



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


Note: Ikke glem å legge til pakkenavnet i programfilen.

Trinn 4: Kjør nå programmet med definer mappebanen

javac srcJavaProgrammingarraysTwoPointers.java

java srcJavaProgrammingarraysTwoPointers.java

Produksjon:

OutputJava-pakker' title=Kjører program med mappebane

Mappestruktur:

Dette er den visuelle representasjonen av en tilpasset pakke i Java i bildet nedenfor. Først lager vi en mappe som heter Progamming og inne i den lager vi en pakke Javaprogrammering og lager så en annen underpakke som heter matriser . Deretter lager vi en Java-klassefil inne i den som er vist på bildet nedenfor:

PakkeInJava1' loading='lazy' title=Mappestruktur

Arbeid med Java-pakker

Katalogstruktur: Pakkenavn og katalogstrukturer er nært beslektet. Hvis for eksempel et pakkenavn er college.staff.cse, er tre kataloger høyskoleansatte og cse der cse er innenfor personalet og ansatte er inne på college.

Navnekonvensjoner : Pakkenavn skrives i omvendt rekkefølge av domenenavn, f.eks. org.geeksforgeeks.practice. På en høyskole kan konvensjonen være:

  • college.tech.cse
  • college.tech.ee
  • høyskole.kunsthistorie

Eksempel:

import java.util.*;

Her er util en underpakke opprettet inne i java-pakken.  

Tilgang til klasser i en pakke

I Java kan vi importere klasser fra en pakke ved å bruke en av følgende metoder:

1. Importer en bestemt klasse :

import java.util.Vector;

Dette importerer bare Vector-klassen fra java.util-pakken.

markdown fotnoter

2. Importer alle klasser fra en pakke :

import java.util.*;

Dette importerer alle klasser og grensesnitt fra java.util-pakken, men inkluderer ikke underpakker.

Eksempel: Importer Vector-klassen

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

Produksjon
[3 5 7] 

Note:

  • Bruker importpakke.*; importerer alle klasser i en pakke, men ikke klasser fra underpakkene.
  • Når to pakker har klasser med samme navn (f.eks. java.util.Date og my.package.Date), bruk det fullstendige navnet for å unngå konflikter:

import java.util.Date;

importer min.pakke.dato;

Typer Java-pakker

  • Innebygde pakker
  • Brukerdefinerte pakker

1. Innebygde pakker

Disse pakkene består av et stort antall klasser som er en del av Java API .Noen av de ofte brukte innebygde pakkene er:

  • java.lang : Inneholder språkstøtteklasser (f.eks. klasser som definerer primitive datatyper matematiske operasjoner). Denne pakken importeres automatisk.
  • java.io: Inneholder klasser for støtte for input/output-operasjoner.
  • java.util : Inneholder verktøyklasser som implementerer datastrukturer som Linked List Dictionary og støtte; for dato/klokkeslett operasjoner.
  • java.applet: Inneholder klasser for å lage appletter.
  • java.aut: Inneholder klasser for implementering av komponentene for grafiske brukergrensesnitt (som knapp ;menyer osv.). 6)
  • java.net: Inneholder klasser for støtte for nettverksoperasjoner.

2. Brukerdefinerte pakker

Dette er pakkene som er definert av brukeren.

abstrakt klasse vs grensesnitt

1. Lag pakken:

Først lager vi en katalog myPackage (navnet skal være det samme som navnet på pakken). Deretter oppretter du MyClass inne i katalogen med den første setningen som pakkenavnene.

Eksempel:

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


2. Bruk klassen i programmet:

Nå skal vi bruke Min Klasse klasse i programmet vårt.

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


Note: MyClass.java må lagres i myPackage-katalogen siden det er en del av pakken.  

Statisk import i Java

Statisk import i Java handler om å forenkle tilgangen til statiske medlemmer og skiller den fra den bredere diskusjonen om brukerdefinerte pakker.

Statisk import er en funksjon introdusert i programmeringsspråket Java (versjon 5 og nyere) som lar medlemmer (felt og metoder) definert i en klasse som offentlig statisk skal brukes i Java-kode uten å spesifisere klassen der feltet er definert.

Eksempel:

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

Produksjon
GeeksforGeeks 

Håndtering av navnekonflikter

Når to pakker inneholder en klasse med samme navn (f.eks. java.util.Date og java.sql.Date), spesifiser hele pakkenavnet for å unngå konflikter.

import java.util.*;
importer java.sql.*;
//Og bruk deretter Date-klassen, så får vi en kompileringstidsfeil:
Dato i dag ; //FEIL-- java.util.Date eller java.sql.Date?

Kompilatoren vil ikke kunne finne ut hvilken Date-klasse vi vil ha. Dette problemet kan løses ved å bruke en spesifikk importerklæring:

import java.util.Date;
importer java.sql.*;

Hvis vi trenger begge Date-klassene, må vi bruke et fullstendig pakkenavn hver gang vi erklærer et nytt objekt for den klassen. For eksempel:

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

apurva padgaonkar

Katalogstruktur og CLASSPATH

Pakkenavn tilsvarer en katalogstruktur. For eksempel er en klassesirkel i pakken com.zzz.project1.subproject2 lagret som:

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

  • Her $BASE_DIR representerer basiskatalogen til pakken.
  • 'Prikken' i pakkenavnet tilsvarer en underkatalog til filsystemet.
  • Basiskatalogen ( $BASE_DIR ) kan være plassert hvor som helst i filsystemet.
  • Derfor må Java-kompilatoren og kjøretiden informeres om plasseringen av $BASE_DIR for å finne klassene.
  • Det oppnås av en miljøvariabel kalt KLASSEVEIEN .
  • CLASSPATH ligner på en annen miljøvariabel PATH som brukes av kommandoskallet for å søke etter de kjørbare programmene.

Innstilling av CLASSPATH

CLASSPATH kan angis på en av følgende måter:

  • CLASSPATH kan settes permanent i miljøet trinnene I Windows er

Gå til Kontrollpanel -> System -> Avansert -> Miljøvariabler.

  • Velg 'Systemvariabler' for å bruke CLASSPATH for alle brukere på systemet.
  • Velg "Brukervariabler" for å bruke den bare for den påloggede brukeren.
  • Rediger eller opprett CLASSPATH: Hvis CLASSPATH allerede eksisterer, velg den og klikk "Rediger" eller hvis den ikke eksisterer, klikk "Ny"
  • Skriv inn CLASSPATH-detaljer: I feltet 'Variable name' skriver du inn: 'CLASSPATH' I feltet 'Variable value' skriver du inn katalogene og JAR-filene atskilt med semikolon.
  • I feltet 'Variabelverdi' skriver du inn katalogene og JAR-filene atskilt med semikolon. Eksempel:

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

  • Prikken (.) representerer gjeldende arbeidskatalog.
  • For å sjekke gjeldende innstilling av CLASSPATH, utsted følgende kommando:

> SETT KLASSEBANEN

CLASSPATH kan settes midlertidig for den bestemte CMD-skalløkten ved å utstede følgende kommando:

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

I stedet for å bruke miljøvariabelen CLASSPATH kan du også bruke kommandolinjealternativet -classpath eller -cp for javac- og java-kommandoene for eksempel

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

Illustrasjon av brukerdefinerte pakker:  Opprette vår første pakke: Filnavn – ClassOne.java

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

Oppretter vår andre pakke: Filnavn – ClassTwo.java

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

Bruker begge de opprettede pakkene: Filnavn – 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 nå en titt på katalogstrukturen til både pakkene og testklassefilen:

Katalogstruktur' loading='lazy' title=

Tilgangsmodifikatorer i konteksten av pakker

  • Offentlig: Medlemmer medpublicmodifikator er tilgjengelig fra hvor som helst uavhengig av om tilgangsklassen er i samme pakke eller ikke .
  • Beskyttet: Medlemmer med den beskyttede modifikatoren er tilgjengelige innenfor samme pakke i underklasser
  • Misligholde: Medlemmer uten modifikator er kun tilgjengelig innenfor samme pakke
  • Privat: Medlemmer medprivatemodifikator er bare tilgjengelig innenfor samme klasse. De kan ikke nås av klasser i samme pakkeunderklasser eller forskjellige pakker.