Java/Modificatori di accesso: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Annullate le modifiche di 93.35.223.227 (discussione), riportata alla versione precedente di 130.25.5.179
Etichetta: Rollback
Gian BOT (discussione | contributi)
m Bot: sostituzione tag obsoleti
Riga 4:
== I modificatori ==
 
I modificatori sono parole riservate che forniscono al compilatore informazioni sulla natura del codice, dei dati e delle Classi contenuti nei file sorgenti. Fra tutti i modificatori alcuni possono essere raggruppati in una singola categoria che ne specifica il comportamento, essi sono i <ttcode>modificatori di accesso</ttcode>:
 
*<ttcode>private</ttcode>
*<ttcode>protected</ttcode>
*<ttcode>public</ttcode>
 
In assenza di questi tre, un elemento di programma viene considerato <ttcode>package-local</ttcode> o <ttcode>friend</ttcode> (si dice che assume la ''visibilità di default'').
 
Le visibilità possibili sono:
Riga 56:
=== private ===
 
<ttcode>private</ttcode> è il modificatore di accesso più restrittivo. I metodi e gli attributi dichiarati <ttcode>private</ttcode>, non sono visibili né usabili all'esterno della classe che li contiene. Due oggetti della stessa classe però, possono vedere i rispettivi attributi e metodi privati.
 
Tuttavia è possibile accedervi dall'esterno mediante metodi di lettura e modifica dei valori: metodi "get" e "set". La possibilità di usare valori con il modificatore <ttcode>private</ttcode> è un punto importante della programmazione a oggetti.
 
In questo modo i valori <ttcode>private</ttcode> vengono [[w:it:incapsulati|incapsulati]], rendendo impossibile il loro richiamo o modifica da parte di altre porzioni di codice, a causa di disattenzione o casualità, o perfino di codice malevolo. Ovvero per leggerli o modificarli occorre implementare e chiamare appositamente i metodi get e set.
 
Dunque dove possibile bisogna sempre editare come <ttcode>private</ttcode> gli elementi del programma, è una indicazione forte ma non un obbligo.
 
Si veda [[Java/Esempi/Private|l'esempio di codice]] nella sezione "Esempi" del libro.
Riga 73:
Il modificatore di default viene assegnato automaticamente dal compilatore solo quando nella scrittura del sorgente si omettono gli altri modificatori.
 
Di default indica che l'elemento è di accesso pubblico ma solo ed esclusivamente al package della classe dove è inserito, diversamente da <ttcode>public</ttcode> e <ttcode>protected</ttcode> dove è visibile anche in package esterni.
 
Si può dire che è leggermente più restrittivo di <ttcode>protected</ttcode>.
 
=== protected ===
 
Il modificatore <ttcode>protected</ttcode> può essere attribuito solo ai metodi e alle variabili interne alla classe e non può essere applicato alla classe stessa. I metodi e le variabili dichiarate come <ttcode>protected</ttcode> sono visibili da classi dichiarate nello stesso package e da sottoclassi e classi derivate dichiarate ovunque. <ref>[http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.6.2 Java Language Specification, section 6.6.2]</ref>
Si può dire che è leggermente più restrittivo di <ttcode>public</ttcode>.
 
=== public ===
 
Il modificatore <ttcode>public</ttcode> può essere attribuito a tutti gli elementi di una classe.
 
<ttcode>public</ttcode> definisce l'elemento del programma come "pubblico" e quindi questo è visibile e modificabile dall'esterno della classe, da qualsiasi package.
 
==Note==