Fala, meus consagrados! Tudo beleza com vocês?
Vocês sabem o que são modificadores de acesso para classes e membros de classes e para que servem? Vamos entender como aplicá-los quando criamos classes na Linguagem Java.
Conceituação
Os modificadores de acesso são padrões de visibilidade de acessos a classes e membros de uma classe (atributos e métodos). Determinam se uma classe pode usar uma outra, invocando um determinado atributo ou um determinado método.
Na Linguagem Java, há dois níveis de modificadores de acesso:
- Nível superior:
- Aplicados a classes;
- São os seguintes modificadores:
- public; e
- default;
- Sem modificador explícito; e
- Nível de membro:
- Aplicados a:
- Atributos; e
- Métodos;
- São os seguintes modificadores:
- private;
- public;
- protected;
- default;
- Sem modificador explícito.
- Aplicados a:
Modificadores de nível superior
public torna uma classe visível:
- Para qualquer outra classe; e
- Em qualquer pacote.
default (sem modificador explícito) torna uma classe visível apenas para classes do mesmo pacote.
Na figura 1, temos:
- A classe pública A do pacote 1 é visível pelas classes:
- Default B do pacote 1;
- Pública C do pacote 2; e
- Default D do pacote 2;
- A classe default B do pacote 1 é visível apenas pela classe pública A do pacote 1;
- A classe pública C do pacote 2 é visível pelas classes:
- Pública A do pacote 1;
- Default B do pacote 1; e
- Default D do pacote 2;
- A classe default D do pacote 2 é visível apenas pela classe pública C do pacote 2.
Modificadores de nível de membro
public torna um membro acessível:
- Em qualquer lugar; e
- A qualquer outra classe que possa visualizar a classe que contém o membro.
Na figura 2, os membros (atributo e método) públicos da classe pública A do pacote 1 são visíveis pela própria classe A e pelas classes:
- Default B do pacote 1;
- Pública C do pacote 2; e
- Default D do pacote 2.
protected torna um membro acessível às classes:
- Do mesmo pacote; e
- Através de herança.
Os membros herdados não são acessíveis a outras classes fora do pacote em que foram declarados.
Na figura 3, os membros (atributo e método) protegidos da classe pública A do pacote 1 são visíveis pela própria classe A e pelas classes:
- Default B do pacote 1; e
- Pública C do pacote 2.
default (sem modificador explícito) torna um membro acessível apenas para classes do mesmo pacote.
Na figura 4, os membros (atributo e método) default da classe pública A do pacote 1 são visíveis pela própria classe A e pela classe default B do pacote 1.
private torna um membro acessível apenas para a classe que o contém.
Na figura 5, os membros (atributo e método) privados da classe pública A do pacote 1 são visíveis apenas pela própria classe A.
Resumo dos modificadores de nível de membro
De acordo com a figura 6, temos:
- public torna um membro da classe visível :
- Pela própria classe;
- Pelas classes do mesmo pacote;
- Pelas subclasses; e
- Por qualquer classe, mesmo de outros pacotes;
- protected torna um membro da classe visível :
- Pela própria classe;
- Pelas classes do mesmo pacote; e
- Pelas subclasses;
- default torna um membro da classe visível :
- Pela própria classe; e
- Pelas classes do mesmo pacote; e
- private torna um membro da classe visível pela própria classe.
Do nível mais restritivo para o mais liberal, de acordo com a figura 7, temos:
- private;
- default;
- protected; e
- public.
A figura 8 é só um brinde para ajudar na memorização dos modificadores de nível de membro na Linguagem Java. =)
Na próxima parte, iremos tratar as questões sobre essa teoria. Então revisem que teremos ótimas questões para respondermos.
Espero que gostem e desejo que se preparem conosco durante essa jornada na conquista de uma tão sonhada vaguinha em um concurso público.
Então é isso!
[]’s e até a próxima!
_________________________
Professor Rogerão Araújo