Controllo dell’accesso ai membri di una classe

Controllo dell’accesso ai membri di una classe

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 Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N private Y N N N

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 Beta Alphasub Gamma public Y Y Y Y protected Y Y Y N no modifier Y Y N N private Y N N N

Tips on Choosing an Access Level:

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. Usaprivate a meno che tu non abbia una buona ragione per non farlo.
  • Evitapublic 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *