Modificatori di accesso

 

 

Ecco un riepilogo dei modificatori di accesso per le classi in Java:

  1. public: La classe è accessibile da qualsiasi altro codice, sia all’interno dello stesso package che in altri package.
  2. private: La classe è accessibile solo all’interno della stessa classe.
  3. protected: La classe è accessibile all’interno della stessa classe e da classi derivate (sia nello stesso package che in altri package).
  4. package-private (default): La classe è accessibile solo all’interno dello stesso package.

 

E' perfettamente lecito definire più classi all’interno dello stesso file .java. Tuttavia, ci sono alcune regole da seguire:

  1. Solo un tipo può essere “public”: Se hai più classi nello stesso file, al massimo una di esse può essere dichiarata “public”. Se c’è una classe pubblica, il nome del file sorgente (escluso l’estensione .java) deve corrispondere esattamente al nome di quella classe pubblica.

  2. Nome del file sorgente: Se hai più classi, il nome del file dovrebbe riflettere il nome della classe pubblica. Ad esempio, se hai una classe pubblica chiamata MiaClasse, il file dovrebbe essere denominato MiaClasse.java.

Ecco un esempio di come potresti organizzare più classi all’interno dello stesso file .java:

 

Classe: MiaClasse

 1 package miaclasse;
 2 
 3 // File: MiaClasse.java
 4 public class MiaClasse {
 5     // ...
 6 }
 7 
 8 // Altre classi non pubbliche
 9 class AltraClasse {
10     // ...
11 }
12 
13 class AncoraUnaAltraClasse {
14     // ...
15 }    

 

questo è il modo corretto di scrivere piu classi.la prima classe che ho lostesso nome del file è l'unica classe veramente pbblica, le altre che non hanno il modificatore di accsso prendono quello di default ossia package-private.

Se si scrivesse invece in questo modo:

 

Classe: MiaClasseErrata

 1 package miaclasseerrata;
 2 
 3 // File: MiaClasseErrata.java
 4 
 5 public class MiaClasseErrata {
 6     // ...
 7 }
 8 
 9 // Altre classi pubbliche
10 public class AltraClasse {
11     // ...
12 }
13 
14 public class AncoraUnaAltraClasse {
15     // ...
16 }

 

Il compilatore considera le altre classi comunque package-private anche se sono state dichiarate public.