packagecom.scjp.chapterone;// classe com nivel de acesso defaultclassMinhaClasse{publicintvalue=5;}
outra classe
packagecom.scjp.chapterone.otherpack;// classe com nivel de acesso defaultclassMinhaOutraClasse{// tipo totalmente qualificadopubliccom.scjp.chapterone.MinhaClasseclasse;publicintvalue=5;}
A classe “MinhaClasse” tem acesso default, então só pode usá-la quem estiver no mesmo pacote.
A classe “MinhaOutraClasse” está no pacote com.scjp.chapterone.otherpack, ou seja, outro pacote.
Mesmo que você escreva o caminho completo da classe (com pacote e tudo), você “nem sabe que ela existe”, pois você não tem visibilidade.
Se você colocar public nela, provavelmente irá visualizar.
JhowTroMundo
diegosantiviago:
não sei se eu entendi sua pergunta.
mas olha só:
A classe “MinhaClasse” tem acesso default, então só pode usá-la quem estiver no mesmo pacote.
A classe “MinhaOutraClasse” está no pacote com.scjp.chapterone.otherpack, ou seja, outro pacote.
Mesmo que você escreva o caminho completo da classe (com pacote e tudo), você “nem sabe que ela existe”, pois você não tem visibilidade.
Se você colocar public nela, provavelmente irá visualizar.
O log diz exatamente isso.
faeldix
sim sim… isso e verdade, mas olha o que ta escrito no livro…
diegosantiviago
Pega o livro em inglês e ve como está escrito.
As vezes foi um erro de interpretação/tradução.
sidney.tavares
Olá, com certeza plena isso é um erro de interpretação na tradução do livro, e isso fica mais claro ainda quando você lê o log que diz que MinhaClasse não compila porque ela não é pública e não pode ser acessada de fora do pacote. Como o colega disse, se você ler o livro em inglês verá que este mesmo trecho não está escrito da forma como está em português. Portanto a regra é: Modificador de acesso de pacote na declaração da classe significa que essa classe só pode ser acessada por outras classes do mesmo pacote.
faeldix
alguem tem o livro ai em ingles pra tirar essa duvida?
ribclauport
No livro em Inglês está como abaixo:
Tea won’t compile because its superclass, Beverage, has default access and is in
a different package. You can do one of two things to make this work. You could put
both classes in the same package, or you could declare Beverage as public, as the next
section describes.
When you see a question with complex logic, be sure to look at the access
modifiers first. That way, if you spot an access violation (for example, a class in
package A trying to access a default class in package B), you’ll know the code won’t
compile so you don’t have to bother working through the logic. It’s not as if you
don’t have anything better to do with your time while taking the exam. Just choose
the “Compilation fails” answer and zoom on to the next question.
Bom, nada parecido com o que foi descrito na versão em português, com relação a “Fora …”
ribclauport
msg duplicada.
diegosantiviago
triste… por isso eu não gostei de livros que são traduções