Amigo marcnexus entiendo tu confusión, cualquier persona que se inicia en el mundo del desarrollo de una manera formal y profesional se hace este tipo de preguntas.
La respuesta de porque debo utilizar "
private" o "
public" no es solamente técnica, por el contrario es totalmente conceptual y estructural. No olvides que la teoría orientada a objetos se basa en la abstracción del un objeto de la vida real (persona, animal, cosa) llevada a la programación.
Un ejemplo puede ser el siguiente (buscare que comprendas el pundo de vista conceptual):
1) Tengo la clase "
Casa" y ella tiene una lista de propiedades "
ventana,
sofa,
cocina,
puertaPrincipal".
2) Tengo la clase "
Vecindad".
3) Dentro de la clase "
Vecindad" instancio la clase "
Casa"
4) Estando en la clase "
Vecindad" quiero acceder a las propiedades de la clase "
Casa" y aqui viene la pregunta del millon...!!! Que propiedades de la clase "
Casa" deberían ser "
private" o "
public"???, la respuesta es:
public ventana "
La ventana puede ser visualizada por una persona que se encuentre en el vecindario por ende debe ser publica osea que el vecindario tiene acceso a la ventana aunque sea parte de la casa"
private sofa "
Solo las personas que vivan dentro de la casa pueden sentarse en el sofa, otras personas que esten el vecindario no podran hacerlo"
private cocina "
Solo las personas que vivan dentro de la casa pueden acceder a la cosina, otras personas que esten el vecindario no podran hacerlo"
public puertaPrincipal "
La puerta principal puede ser accedida por una persona que se encuentre en el vecindario por ende debe ser publica osea que el vecindario tiene acceso a la puerta principal aunque sea parte de la casa"
Espero poder aclarado tu duda.. o por lo menos en parte