DaniMir, he preparado este ejemplo para que notes la diferencia muy notoria entre el identificador "Public" y el no poner ningún modificador, que por cierto, me entere que a este ultimo caso le llaman "acceso de paquete" (Y ya notaras porque la llaman así):
Supongamos que tengas un proyecto, y en ese proyecto tengas 2 paquetes (o package) creados en el
Como ves, el paquete "ASDf" contiene dos clases (SoyLink y SoyMario) mientras que el paquete "Nuevo" solo tiene una clase (Main). Ahora, en ambas clases vamos a definir 1 solo atributo, un método (setter) y una función (getter).
En la clase "SoyLink", vamos a definir el setter como publico... mientras que el getter, asignemoslo como un acceso de paquete.
En la clase "SoyMario", simplemente asignamos ambos como public.
Ahora vamonos al otro paquete "Nuevo", abrimos la clase Main donde creamos un vulgar método main y aquí viene lo interesante...
De la instancia de la clase "SoyLink" solo puedo acceder solamente al setter que definimos como public... mientras que el getter brilla por su ausencia (getNombre).
Y si probamos con la otra clase "SoyMario"?
Mira que de esta instancia si puedo acceder al setter y al getter, pues porque ambas estan definidas como
public.
Aquí la diferencia... si no le asignas un modificador de acceso te veras forzado a
solo utilizar dicho elemento dentro del paquete, mientras que con un public,
puedes utilizarlo fuera y dentro del paquete al que pertenece.
En cuanto al modificador private, así como has dicho trabaja. Solo se puede utilizar dentro de la clase. . . hay otro mas que se llama
protected, pero este lo vas a comprender mucho mejor cuando llegues a la parte de herencia en el curso.
Salu2!!