Urca urca, non avevo fatto caso ad una cosa!!!! E questa cosa sta più o meno alla base di tutta la programmazione ad oggetti.
Tu in cliente fai la print passando come parametro m1.numDest: così facendo accedi dalla classe Utente ad un attributo della classe Messaggio. In generale questo non è assolutamente consigliabile, perchè in questo modo potresti anche direttamente fare, sempre dalla classe Utente, m1.numDest = "quello che vuoi tu".
In Messaggio gli attributi devono essere private, così possono essere toccati solo dall'interno della classe messaggio stessa
Public e private funzionano per gli attributi come per i metodi.
Ci sono poi anche altri tipi di visibilità oltre a public e private: sono "friendly", "protected" e "package" : non mi ricordo mai bene come sono, anzi due sono la stessa cosa... se vuoi guarda sul manuale
Ciao