Os
modificadores de acesso definem o escopo de visibilidade da classe, ou seja,
servem para restringir ou permitir o acesso a uma classe.
Acesso=
Visiabilidade
Acesso padrão ou default:
Não possui modificador.
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, criando duas classes com acesso padrão 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 public: 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.
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();
}
|
Classe Private:
Métodos e variáveis marcadas como private só podem ser acessados pela classe na qual foram declarados; outras classes não acessam membros privados nem por herança, nem por instância.
Membros protected:
Pode ser acessado por classes do mesmo pacote por meio da instanciação, e acessado
por classes de outros pacotes através de herança.
Obs:
membros padrão e protected diferem apenas quando se trata de
subclasses.
Enfim,
protected acessa mesma classe, mesmo pacote por subclasse e não subclasse e
pacote diferente pela subclasse.