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.