Una clase pública tiene visibilidad “pública”, lo que significa que es accesible a cualquier clase de cualquier paquete, mientras que una clase tiene visibilidad “por defecto” o “de paquete”, es decir, la clase es accesible sólo a las clases dentro del mismo paquete. Además, si sólo trabajas en un paquete, no hay diferencia, puedes usar ambos.