Quote:
Originariamente inviato da thewebsurfer
fammi capire
ma per usare sto metodo toString non avrei dovuto stampare contobanca.toString??
xke è corretto stampare l'istanza contobanca della classe Conto così com'è? 
|
Si ma il metodo toString lo devi scrivere nella classe Conto se no ti invoca il toString ereditato da object,ti scrivo il codice cosi magari capisci meglio:
Codice:
package banca;
public class Banca {
public static void main (String[] args){
Conto contobanca = new Conto(10);
contobanca.aggiungi(1000);
contobanca.sottrai(50);
System.out.println("il saldo è " + contobanca.toString());
}
}
class Conto{
private int saldo;
public Conto(int saldoiniziale){
saldo = saldoiniziale;
}
public void aggiungi(int x){
int nuovosaldo = x + saldo;
saldo= nuovosaldo;
}
public void sottrai (int x){
int nuovosaldo = saldo - x;
saldo = nuovosaldo;
}
public String toString(){
String result = Integer.toString(saldo);
return result;
}
}
se tu accedi con l'operatore punto a saldo violi l'incapsulamento,teoria dell'oop,e nel caso del mio codice non funzionerebbe perchè saldo è dichiarato private appunto per preservare l'incapsulamento,e ti serve quindi un metodo toString per stampare informazioni sul tuo oggetto,e questo discorso vale anche per leggere o settare saldo,come hai giustamente fatto,seguendo il discorso fatto per toString avresti potuto accedere direttamente anche in quel caso,sbagliando, con l'operatore punto!