Existe a visibilidade de acesso para o atributo. Se for público, não tem restrição. Entretanto, privado apresenta restrição de acesso
A visibilidade public (+):
- Quem tem acesso à classe tem acesso também a qualquer membro com visibilidade public
- O alvo aqui é o programador cliente que usa suas classes
- É raro ter atributos públicos mas é comum ter métodos públicos
A visibilidade private (-):
- O membro private não é acessível fora da classe
- A intenção aqui é permitir que apenas você que escreve a classe possa usar esse membro
A visibilidade protected (#)
- O membro protected é acessível à classe e a suas subclasses
- A intenção é dar acesso ao programadores que estenderão sua classe
A visibilidade "package" (~)
- Um membro de classe sem especificador de controle de acesso é dito ter a visibilidade package (ou "friendly")
- É como public, mas somente dentro do package
- Todas as classes do package podem acessar um membro "friendly"
- É usado para permitir acesso mais liberal, mas somente dentro de um mundo controlado e não pelo usuários da classe
- Deve-se ter cuidado com a visibilidade friendly para atributos pois pode abrir muito o acesso, principalmente em packages grandes
.
Fonte: http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/visibilidade.htm