Package
1️⃣ Introduzione
- Le classi correlate tra loro vengono raggruppate in package.
- Se la classe appartiene a un package , è necessario inserire l'istruzione
package p;
all'inizio del file che contiene la classe .flowchart LR c1 & c2 --> eserciziFP d1 --> prove
- Per convenzione, il nome di un package inizia con una lettera minuscola.
- Tutti i file appartenenti allo stesso package devono essere collocati nella stessa cartella, il cui nome corrisponde a quello del package:
flowchart TD src --> eserciziFP src --> prove eserciziFP --> c1.java eserciziFP --> c2.java prove --> d1.java style src fill:#f9c6c9,stroke:#333,stroke-width:2px,color:#0057e7
- Se non è presente alcuna istruzione
package
, il file è considerato parte del package di default (generalmente la cartellasrc
):flowchart TD src --> c1.java src --> c2.java src --> d1.java style src fill:#f9c6c9,stroke:#333,stroke-width:2px,color:#0057e7
- Nota: È possibile includere una sola istruzione
package
in un file, che deve essere posta all'inizio del file, prima di qualsiasi altra istruzione.
- È possibile riferirsi a una classe di un package da una classe in un altro package utilizzando:
- Il nome completo della classe:
Dove:
- è il nome del package;
- è il nome della classe.
Esempio:
package prove; public class p1 { eserciziFP.c1 a; a = new eserciziFP.c1(); a.f1(); // Altre operazioni... }
- L'istruzione
import
, che permette di "importare" una o più classi di un package:Esempio:
package prove; import eserciziFP.c1; // Importa la classe c1 public class d1 { c1 a; a = new c1(); a.f1(); // Altre operazioni... }
- Nota Bene:
import eserciziFP.
*
;
importa tutte le classi del package.
- Nota Bene: Classi con lo stesso nome ma in package diversi sono distinte, quindi è necessario usare il nome completo, ad esempio, eserciziFP.c1 è diverso da prove.c1.
- Nota Bene:
- Il nome completo della classe:
2️⃣ Package Standard
I package standard di Java sono sotto-package di java
.
- java.lang (non richiede l'istruzione
import
)- Contiene classi come
Object
,String
,System
,Integer
,Character
,Float
, ecc.
- Contiene classi come
- java.util
- Contiene classi come
Scanner
,Vector
,Set
, ecc.
- Contiene classi come
- java.io
- Contiene classi come
InputStream
,PrintStream
,IOException
, ecc.
- Contiene classi come
3️⃣ Visibilità dei Nomi con i Package
La visibilità si applica sia ai nomi delle classi sia ai nomi dei campi interni alle classi.
Visibilità delle Classi vs Visibilità dei Campi
- Visibilità delle classi:
- public: (esempio:
public
class Razionale {…}
) La classe è visibile ovunque, anche al di fuori del package in cui è dichiarata.
- Default (senza
public
): (esempio:class Razionale {…}
) La classe è visibile solo all'interno del package in cui è dichiarata (visibilità di package o predefinita).
- public: (esempio:
- Visibilità dei campi:
- public: I campi sono visibili ovunque.
- private: I campi sono visibili solo all'interno della classe in cui sono dichiarati.
- Default (senza specifica): I campi sono visibili all'interno della classe in cui sono dichiarati e anche alle classi dello stesso package.