Qual é o escopo padrão de um método em Java?


165

Se eu digitar:

 void doThis(){
     System.out.println("Hello Stackoverflow.");
 }

qual é o escopo padrão doThis()?

Público? Protegido? Privado?

Respostas:


264

O escopo padrão é privado do pacote. Todas as classes no mesmo pacote podem acessar o método / campo / classe. O pacote privado é mais rígido que os escopos protegidos e públicos, mas mais permissivo que o escopo privado.

Mais informações:
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
http://mindprod.com/jgloss/scope.html


2
"Pacote-padrão é mais rigorosa do que ..."
reinaldoluckman

7
Também vale a pena mencionar que "pacote-privado" é um bom escopo para usar ao expor métodos para teste de unidade externa.
Gary Rowe

1
Se for esse o caso, por que seria necessário tornar público algo a menos que você estivesse criando uma biblioteca ou algo do qual os usuários obtivessem funcionalidade para o código?
Daniel

2
@ user3858162 A maioria dos aplicativos não triviais é organizada em vários pacotes; nesse caso, é necessário um escopo público para chamar métodos de chamada de outros pacotes.
Esko Luontola

19

Qualquer coisa definida como pacote privado pode ser acessada pela própria classe, outras classes dentro do mesmo pacote, mas não fora do pacote e não por subclasses.

Consulte esta página para uma tabela útil de modificadores de nível de acesso ...


9

Sem um modificador de acesso, um membro da classe é acessível em todo o pacote em que é declarado. Você pode aprender mais com a Especificação de Linguagem Java, §6.6.

Os membros de uma interface são sempre acessíveis ao público, declarados explicitamente ou não.



1

O Java 8 agora permite a implementação de métodos dentro de uma interface com escopo padrão (e estático apenas).


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.