Java: Modificadores de acesso – Parte I (Teoria)

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.

Avatar


11 de Janeiro de 2021

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.

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.

Figura 1: exemplo da aplicação dos modificadores de nível superior.

Figura 1: exemplo da aplicação dos modificadores de nível superior.

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.
Figura 2: exemplo da aplicação do modificador de nível de membro public para membros (atributo e método) da classe pública A do pacote 1.

Figura 2: exemplo da aplicação do modificador de nível de membro public para membros (atributo e método) da classe pública A do pacote 1.

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.

Figura 3: exemplo da aplicação do modificador de nível de membro protected para membros (atributo e método) da classe pública A do pacote 1.

Figura 3: exemplo da aplicação do modificador de nível de membro protected para membros (atributo e método) da classe pública A do pacote 1.

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.

Figura 4: exemplo da aplicação do modificador de nível de membro default para membros (atributo e método) da classe pública A do pacote 1.

Figura 4: exemplo da aplicação do modificador de nível de membro default para membros (atributo e método) da classe pública A do pacote 1.

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.

Figura 5: exemplo da aplicação do modificador de nível de membro private para membros (atributo e método) da classe pública A do pacote 1.

Figura 5: exemplo da aplicação do modificador de nível de membro private para membros (atributo e método) da classe pública A do pacote 1.

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

Figura 6: resumo dos modificadores de nível de membro.

Figura 6: 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.
Figura 7: ordem de restrição dos modificadores de nível de membro.

Figura 7: ordem de restrição dos modificadores de nível de membro.

Do nível mais restritivo para o mais liberal, de acordo com a figura 7, temos:

  • private;
  • default;
  • protected; e
  • public.
Figura 8: esquema de memorização dos modificadores de nível de membro.

Figura 8: esquema de memorização dos modificadores de nível de membro.

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

Avatar


11 de Janeiro de 2021