Domanda

Se ho una classe Java che è privata del pacchetto (dichiarata con "classe", non "classe pubblica"), non c'è davvero alcuna differenza se i metodi all'interno sono dichiarati pubblici o protetti o privati ​​del pacchetto, giusto?Quindi quale dovrei usare, o quando dovrei usare quale?Sono un po' confuso.

È stato utile?

Soluzione

  

Se ho una classe Java che è il pacchetto-privato (dichiarato con "classe", non "public class"), non c'è davvero nessuna differenza se i metodi all'interno sono dichiarati pubblici o protetti o il pacchetto-privato, giusto?

Beh, forse non immediatamente. Ma se poi (o in futuro) dichiara una o di classe 'protetta' 'pubblico', che eredita dalla classe package-privato, quindi la visibilità dei membri della classe originale do la materia.

Come @kmccoy sottolinea, dichiarando la classe come finale elimina la possibilità di sottoclassi.

Ma questo è in realtà solo di facciata. Se si decide poi che si ha realmente bisogno di creare sottoclassi, è sufficiente rimuovere il final ... e poi si torna nella situazione in cui la scelta di modificatori di accesso è importante.

IMO, la linea di fondo è che si dovrebbe scegliere i modificatori più appropriati ... anche se non è necessario in questo momento. Se non altro, la scelta di modificatori dovrebbe documentare il vostro intento da dove i confini si trovano astrazione.

Altri suggerimenti

I metodi pubblici all'interno di una classe di pacchetto sono pubblici per le classi nello stesso pacchetto.Tuttavia, i metodi privati ​​non saranno accessibili dalle classi nello stesso pacchetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top