Dicas de Java I – Modificadores de Acesso

22/04/2009

Olá pessoal.

Vou começar uma série de posts com dicas para quem está iniciando em java. Pretendo abordar também alguns conceitos sobre Orientação à Objeto, já que esse paradigma hoje é o que domina o mercado.

Pois bem, neste primeiro post da série vou falar sobre os modificadores de acesso do java: public, private, protected e default e alguns outros modificadores que não se referem a acesso: final, abastract e static.

Um modificador de acesso determina como será a visibilidade de uma classe, atributo ou método a partir de outras classes ou métodos.  Alguns modificadores podem ser usados para os esses três itens, porém outros podem ser específicos para as classe , por exemplo.

Modificadores de Acesso

  • public: Uma classe declarada como pública dá as outras classes, de todos os pacotes, acesso aos seus membros que forem públicos também. Lembre-se porém que classes de diferentes pacotes precisam ser importadas para poderem ter visibilidade (assunto para um outro post).  O mesmo se aplica aos membros da classe (métodos e atributos) que se forem declarados como públicos também são visíveis em todas as classes de todos os pacotes. Por exemplo: Imagine duas classes A e B, ambas públicas, nesse cenário você consegue instanciar um objeto do tipo B na classe A e acessar os membros da classe B.
  • private: O membro da classe não pode ser acessado por nenhuma outra classe, quando é declarado private. Como não é visto pelas subclasses, não se aplica regras de overriding. Esse modificador não se aplica a classes,  somente a seus membros (métodos e atributos) .
  • protected: Quando um membro da classe é declarado assim, ele se torna acessível por classes do mesmo pacote ou através de herança. Os membros herdados não são acessíveis a outras classes fora do pacote em que foram declarados. Você só pode usar esse modificador em métodos e atributos.
  • default (padrão): A classe e/ou seus  membros são acessíveis somente por classes do mesmo pacote.

Tabela resumo dos modificadores de acesso

private default protected public
mesma classe sim sim sim sim
mesmo pacote não sim sim sim
pacotes diferentes (sendo

subclasses)

não não sim * sim
pacotes diferentes (não

sendo subclasses)

não não não sim

* através da herança

Outros modificadores de acesso

  • final: Quando é aplicado à classe não permite estende-lá, nos métodos impede que o mesmo seja sobrescrito (overriding) na subclasse, já nas variáveis impossibilita que essa seja reinicializada com outro valor.
  • abstract: Classes declaradas como abstratas provém um modo de adiar a implementação de métodos também declarados como abstratos para subclasses. Uma classe abstrata não pode ser instanciada, ou seja, não podemos chamar os seus construtores. A primeira classe não abstrata que estender a classe abstrata deverá implementar todos os métodos abstratos herdados, esse modificador não se aplica à variáveis.
  • static: Variáveis e métodos marcados como static pertencem à classe, ao invés de alguma instância dessa, esse modificador não se aplica a classes.

Esses foram os modificadores de acesso em java, num próximo post estarei mostrando outras dicas relativas à linguagem. Seu feed-back é muito importante, não deixe de comentar suas dúvidas e opniões.

Até a próxima.