Ok, quindi diciamo che è un esempio fine a se stesso.
Ho svolto un esercizio su questo argomento (in realtà l'avevo già postato ma l'ho rifatto).
Questa è la traccia:
Creare una classe Risultato che dichiari una sola variabile d'istanza di tipo float e di nome risultato. Aggiungere eventuali metodi e costruttori utili. Creare una classe CambiaRisultato con un metodo public di nome cambiaRisultato() che prende in input un oggetto di tipo risultato e ne modifica la variabile interna risultato sommandola con un altro valore. Creare una classe con un metodo main() di nome TestRisultato che stampi la variabile risultato di un oggetto di tipo Risultato, prima e dopo che questo oggetto sia passato in input al metodo cambiaRisultato() di un oggetto di tipo CambiaRisultato.
e questa è la mia soluzione:
codice:
public class TestRisultato
{
public static void main(String args[])
{
Risultato oggetto1 = new Risultato();
System.out.println(oggetto1.risultato);
CambiaRisultato oggetto2 = new CambiaRisultato();
oggetto2.cambiaRisultato(oggetto1);
System.out.println(oggetto1.risultato);
}
}
codice:
public class Risultato
{
public float risultato;
public float somma()
{
risultato = risultato + 1;
return(risultato);
}
}
codice:
public class CambiaRisultato
{
public void cambiaRisultato(Risultato oggetto)
{
oggetto.somma();
}
}
Ho fatto questo esempio perchè il metodo cambiaRisultato() va a modificare (tramite il metodo somma()) la variabile risultato dell'oggetto1 poichè l'oggetto1 viene passato in input quindi sa esattamente dove puntare, mentre non viene assolutamente modificato l'indirizzo di memoria (o reference) poichè non c'è un'istruzione del tipo oggetto = new Risultato().
Giusto?