Modificadores e Níveis de Acesso a Classes


Olá pessoal! Nosso primeiro assunto é um dos mais importantes na certificação SCJP.
Quem está iniciando em Java pode ficar um pouco confuso em relação a modificadores e níveis de acesso, mas nada que não possa ser resolvido. Então chega de conversa e vamos ao que interessa!
Os modificadores de acesso definem o escopo de visibilidade da classe, ou seja, servem para restringir ou permitir o acesso a uma classe. São três os modificadores de acesso: public, protected e private; porém, apenas o public é aplicado a classes.
Embora existam três modificadores de acesso, são quatro os níveis ou controles de acesso: público, protegido, privado e default; porém, apenas os acessos público e default são aplicados a classes.
Acesso significa visibilidade. Dessa forma, são três modificadores de acesso e quatro níveis de acesso; isso ocorre porque o nível de acesso default não possui um modificador.

Acesso default ou padrão:

Como já disse anteriormente, uma classe com acesso default não possui modificador na sua declaração. Por exemplo:

Esse é o chamado acesso em nível de pacote, pois classes com esse tipo de acesso só podem ser vistas (acessadas) por classes de dentro do mesmo pacote em que estão declaradas.
Por exemplo, se criarmos duas classes com acesso default e as colocarmos em pacotes diferentes, uma não poderá enxergar a outra; ou seja, uma classe não poderá herdar ou criar instâncias da outra classe, ou até mesmo declarar um retorno ou uma variável com o tipo da outra classe.

Acesso público:

Uma declaração de classe com a palavra-chave public caracteriza o acesso público, permitindo que todas as classes de todos os pacotes a vejam e acessem.
Por exemplo, se duas classes possuem acesso público, uma poderá criar instâncias, herdar, declarar uma variável ou um retorno com o tipo da outra classe, desde que utilize as notações de importação caso estejam em pacotes diferentes.

Exemplo de acessos default e público:

package bebida;

public class Bebida_alcoolica {  // acesso público

      /* erro de compilação - Bebida_alcoolica não 
       * tem acesso a classe Caipirinha porque estão 
       * em pacotes diferentes e Caipirinha possui
       * acesso default */
      Caipirinha c = new Caipirinha();  
     
}


package bebida.brasil;

import bebida.Bebida_alcoolica;

class Caipirinha {  // acesso default

      /* possui acesso a classe Bebida_alcoolica,
       * mesmo em pacotes diferentes, porque
       * Bebida_alcoolica possui acesso público */
      Bebida_alcoolica b = new Bebida_alcoolica();  
     
}

0 comentários:

Postar um comentário