Java: accessibilità del metodo all'interno della classe privata del pacchetto?
-
20-09-2019 - |
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.
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.