Acesso Padrão:
Felizmente, o MotherDuck é mais flexível sobre o que seus patinhos podem fazer. Ela permite classes no mesmo pacote para acessar seus membros. Quando não há modificador de acesso, Java usa o padrão, que é o acesso privado ao pacote. Isso significa que o membro é "privado" para classes no mesmo pacote. Em outras palavras, somente classes no pacote podem acessá-lo.
package pond.duck;
public class MotherDuck {
String noise = "quack";
void quack() {
System.out.println(noise); // default access is ok
}
private void makeNoise() {
quack(); // default access is ok
} }
O MotherDuck pode chamar quack () e se referir a noise. Afinal, membros da mesma classe certamente estão no mesmo pacote. A grande diferença é que o MotherDuck permite que outras classes membros de acesso ao mesmo pacote (devido ao fato de serem privados do pacote), enquanto o FatherDuck não (devido a ser privado). O GoodDuckling tem uma experiência muito melhor que o BadDuckling :
package pond.duck;
public class GoodDuckling {
public void makeNoise() {
MotherDuck duck = new MotherDuck();
duck.quack(); // default access
System.out.println(duck.noise); // default access
} }
O GoodDuckling consegue aprender a grasnar () e a fazer barulho , copiando sua mãe. Observe que todas as classes que cobrimos até agora estão no mesmo pacote pond.duck . este permite que o acesso padrão (privado do pacote) funcione. Nesse mesmo lago, um cisne acabou de dar à luz um bebê cisne. Um cisne bebê é chamado cygnet. O cygnet vê os patinhos aprendendo a grasnar e decide aprender com o MotherDuck também.
package pond.swan;
import pond.duck.MotherDuck; // import another package
public class BadCygnet {
public void makeNoise() {
MotherDuck duck = new MotherDuck();
duck.quack(); // DOES NOT COMPILE
System.out.println(duck.noise); // DOES NOT COMPILE
} }
Ah não! O MotherDuck só permite lições para outros patos ao restringir o acesso à lagoa pacote .duck . O pobre BadCygnet está no pacote pond.swan e o código não compilar. Lembre-se de que, quando não há modificador de acesso, somente classes no mesmo pacote podem acessar isso.