Los modificadores de acceso disponibles en Java para un atributo son:
- Modificador de acceso por omisión (o de paquete). Si no se indica ningún modificador de acceso en la declaración del atributo, se utilizará este tipo de acceso. Se permitirá el acceso a este atributo desde todas las clases que estén dentro del mismo paquete (package) que esta clase (la que contiene el atributo que se está declarando). No es necesario escribir ninguna palabra reservada. Si no se pone nada se supone se desea indicar este modo de acceso.
- Modificador de acceso
public
. Indica que cualquier clase (por muy ajena o lejana que sea) tiene acceso a ese atributo. No es muy habitual declarar atributos públicos (public
). - Modificador de acceso
private
. Indica que sólo se puede acceder al atributo desde dentro de la propia clase. El atributo estará "oculto" para cualquier otra zona de código fuera de la clase en la que está declarado el atributo. Es lo opuesto a lo que permitepublic
. - Modificador de acceso
protected
. En este caso se permitirá acceder al atributo desde cualquier subclase (lo verás más adelante al estudiar la herencia) de la clase en la que se encuentre declarado el atributo, y también desde las clases del mismo paquete.
A continuación puedes observar un resumen de los distintos niveles accesibilidad que permite cada modificador:
Misma clase | Subclase | Mismo paquete | Otro paquete | |
---|---|---|---|---|
Sin modificador (paquete) | Sí | Sí | ||
public |
Sí | Sí | Sí | Sí |
private |
Sí | |||
protected |
Sí | Sí | Sí |
¡Recuerda que los modificadores de acceso son excluyentes! Sólo se puede utilizar uno de ellos en la declaración de un atributo.