Stampare un oggetto in questo modo
codice:
System.out.println( p[k] );
non ha molto senso... più che stamparti un hash Java non saprebbe che fare, poichè tu, nella tua classe, non hai specificato come deve comportarsi nella "trasformazione in stringa" dell'oggetto.
Come si fa per farglielo fare bene? Si deve fare l'override del metodo toString() ereditato da Object.
Perchè non ti lascia stampare le singole proprietà dell'oggetto? Semplice: perchè sono private, quindi nessuno dall'esterno ne ha accesso. Come si risolve? Inserendo dei metodi appositi che "ritornano" i valori delle proprietà... questi metodi si chiamano "getter"
Vediamo in soldoni le due cose.
Override di toString():
codice:
public class prova {
...
@Override
public String toString() {
// La stampa di un oggetto "prova" mi darà una stringa con cognome, nome ed età
return cognome + ", " + nome + ", " + eta;
}
Metodi getter:
codice:
public class prova {
...
// Ritorno il cognome
public String getCognome() { return cognome; }
// Ritorno il nome
public String getNome() { return nome; }
// Ritorno l'età
public int getEta() { return eta; }
}
Vediamo di usare tutti e due i metodi:
codice:
// Uso il primo metodo
for(int k=0; k<4; k++) {
System.out.println( p[k] );
}
// Uso il secondo metodo
for(int k=0; k<4; k++) {
System.out.println("Cognome: " + p[k].getCognome() );
System.out.println("Nome: " + p[k].getNome() );
System.out.println("Età: " + p[k].getEta() );
}
Ciao.