I modificatori del livello di accesso determinano se altre classi possono utilizzare un particolare campo o richiamare un particolare metodo. Ci sono due livelli di controllo degli accessi:
- Al livello superiore
public
, o package-private (nessun modificatore esplicito). - A livello di membro
public
,private
,protected
, o package-private (nessun modificatore esplicito).,
Una classe può essere dichiarata con il modificatore public
, nel qual caso quella classe è visibile a tutte le classi ovunque. Se una classe non ha alcun modificatore (il valore predefinito, noto anche come package-private), è visibile solo all’interno del proprio pacchetto (i pacchetti sono denominati gruppi di classi correlate li imparerai in una lezione successiva.)
A livello di membro, puoi anche usare il modificatore public
o nessun modificatore (package-private) proprio come con le classi di livello superiore e con lo stesso significato., Per i membri, ci sono due modificatori di accesso aggiuntivi:private
eprotected
. Il modificatoreprivate
specifica che è possibile accedere al membro solo nella propria classe. Il modificatoreprotected
specifica che è possibile accedere al membro solo all’interno del proprio pacchetto (come con package-private) e, inoltre, da una sottoclasse della sua classe in un altro pacchetto.
La seguente tabella mostra l’accesso ai membri consentito da ciascun modificatore.,Modifier
public
protected
private
The first data column indicates whether the class itself has access to the member defined by the access level., Come puoi vedere, una classe ha sempre accesso ai propri membri. La seconda colonna indica se le classi nello stesso pacchetto della classe (indipendentemente dalla loro parentela) hanno accesso al membro. La terza colonna indica se le sottoclassi della classe dichiarata al di fuori di questo pacchetto hanno accesso al membro. La quarta colonna indica se tutte le classi hanno accesso al membro.
I livelli di accesso ti influenzano in due modi., Innanzitutto, quando si utilizzano classi provenienti da un’altra fonte, ad esempio le classi nella piattaforma Java, i livelli di accesso determinano quali membri di tali classi possono utilizzare le proprie classi. In secondo luogo, quando scrivi una classe, devi decidere quale livello di accesso dovrebbe avere ogni variabile membro e ogni metodo nella tua classe.
Diamo un’occhiata a una raccolta di classi e vediamo come i livelli di accesso influenzano la visibilità. La figura seguente mostra le quattro classi in questo esempio e come sono correlate.,
Classi e Pacchetti di Esempio Utilizzato per Illustrare i Livelli di Accesso
La seguente tabella mostra, in cui i membri della classe Alpha sono visibili per ciascuno dei modificatori di accesso che può essere applicato a loro.,ha
public
protected
private
If other programmers use your class, you want to ensure that errors from misuse cannot happen., I livelli di accesso possono aiutarti a farlo.
- Usa il livello di accesso più restrittivo che abbia senso per un particolare membro. Usa
private
a meno che tu non abbia una buona ragione per non farlo. - Evita
public
campi ad eccezione delle costanti. (Molti degli esempi nel tutorial utilizzano campi pubblici. Questo può aiutare a illustrare alcuni punti in modo conciso, ma non è raccomandato per il codice di produzione.) I campi pubblici tendono a collegarti a una particolare implementazione e limitano la tua flessibilità nel cambiare il tuo codice.