se variabili e/o metodi sono accessibili fuori da una classe A, significa che fanno parte dell'interfaccia di quella classe verso le classi cliente (classi che utilizzano A).

Nascondere variabili e metodi serve a realizzare l'incapsulamento
che e' prassi di buona programmazione

in particolare: e' buona norma che le varibili membro di una classe siano sempre private (a parte poche eccezioni come ad esempio le variabili final static che descrivono delle costanti)

ecco un semplice esempio:
codice:
class A {
public java.awt.Point point = new java.awt.Point();

public void print(){
    System.out.println(point.toString);
  
}
}

class ClienteDiA {

public static void main(String argv[]){
     A temp = new A();
     temp.point = null;
     temp.print(); // errore NullPointerException a causa del mancato incapsulamento 
}

}
Nota che ClienteDiA non e' tenuto a sapere che point non puo' essere posto uguale a null
perche non conosce l'implementazione interna di print()

tutto quello che conosce e' l'interfaccia pubblica di A, ovvero la signature dei suoi metodi pubblici e le sue variabili pubbliche