Ciao a tutti, sto cercando di fare un esercizio su Java, che mi chiede di scrivere cosa stamperebbe a output:
codice:
public class Frutto {
public String toString(){return "Frutto";}
public void macedonia(Frutto f){System.out.println(this + " - " + f);}
public void confronta(Frutto f){System.out.println("Sono uguali");}
}
public class Mela extends Frutto {
public String toString(){return "Mela";}
public void macedonia(Mela f){System.out.println(this + " - " + f);}
public void confronta(Mela m){System.out.println("Sono diversi");}
}
public class Arancia extends Frutto {
public String toString(){return "Arancia";}
public void macedonia(Arancia f){System.out.println(this + " - " + f);}
public void confronta(Arancia a){System.out.println("Non ho idea");}
}
e si spieghi cosa stamperebbe il seguente metodo main, motivando brevemente le risposte:
public class Test {
public static void main(String args[]) {
Frutto f1, f2;
Mela m;
Arancia a;
f1 = new Mela();
f2 = new Arancia();
m = new Mela();
a = new Arancia();
f1.macedonia(f2);
f1.confronta(f2);
a.confronta(f2);
a.confronta(m);
f2 = m;
f1.macedonia(f2);
a.macedonia(m);
a.confronta(a);
}
}
So già il risultato che è :
codice:
SOLUZIONE
Le stampe sono
Mela-Arancia
Sono uguali
Sono uguali
Sono uguali
Mela-Mela
Arancia-Mela
non ho idea
Ma non capisco sinceramente in base a cosa vengono scelti i vari metodi all'interno delle classi. Chi mi può dare una mano? Grazie in anticipo