Duvida sobre nivel de acesso que vi no livro da kathy

Vejam esse trecho:

e vejam meu codigo:

[code]package com.scjp.chapterone;

// classe com nivel de acesso default

class MinhaClasse {
public int value = 5;
}[/code]

outra classe

[code]package com.scjp.chapterone.otherpack;

// classe com nivel de acesso default

class MinhaOutraClasse {

// tipo totalmente qualificado
public com.scjp.chapterone.MinhaClasse classe;	
public int value = 5;

}[/code]

erro no javac:

[code]C:\Users\rafael\Desktop\Java\source\Capitulo 01>javac -classpath “…\class” -d …\class MinhaOutraClasse.java
MinhaOutraClasse.java:5: com.scjp.chapterone.MinhaClasse is not public in com.scjp.chapterone; cannot be accessed from outside package
public com.scjp.chapterone.MinhaClasse classe;
^
1 error

C:\Users\rafael\Desktop\Java\source\Capitulo 01>[/code]

O livro que esta errado nesse trecho: “fora usar nomes de classes totalmente qualificados” ou eu que entendi errado?

FORTE ABRACO!

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.

[quote=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.[/quote]

O log diz exatamente isso.

sim sim… isso e verdade, mas olha o que ta escrito no livro…

Pega o livro em inglês e ve como está escrito.

As vezes foi um erro de interpretação/tradução.

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.

alguem tem o livro ai em ingles pra tirar essa duvida?

No livro em Inglês está como abaixo:

[quote]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.[/quote]

Bom, nada parecido com o que foi descrito na versão em português, com relação a “Fora …”

msg duplicada.

triste… por isso eu não gostei de livros que são traduções