10/04/14 16:01
Mattrix93
Sto studiando da Thinking in Java e sto vedendo l'upcasting. A grandi linee ho capito, ma se me lo potreste spiegare meglio magari motivando l'output del seguente codice, ve ne sarei grato.
class Rodent {
public void callWho() {
this.who();
}
public void who() {
System.out.println("Rodent");
}
}
class Mouse extends Rodent {
@Override
public void who() {
System.out.println("Mouse");
}
public void boh() {
System.out.println("boh");
}
}
public class Prova {
public static void main(String[] args) {
Rodent r = new Mouse();
r.callWho();
//r.boh(); Errore!
}
}
/*Output:
Mouse
*/
Ultima modifica effettuata da Mattrix93 10/04/14 16:01
aaa
10/04/14 17:04
pierotofy
Tutti i topi (mouse) sono dei roditori (rodent).
Ogni roditore implementa callWho() e who().
Rodent r = new Mouse();
E' valido, siccome un topo e' un roditore. Ma a questo punto 'r' e' un roditore, non un topo. Di conseguenza:
r.callWho();
//r.boh(); Errore!
Perche' un roditore ha solamente callWho() e who(), non boh().
Se vuoi chiamare boh(), e sei sicuro che 'r' e' un topo, puoi fare:
((Mouse)r).boh(); // OK
Ultima modifica effettuata da pierotofy 10/04/14 17:04
10/04/14 18:12
Roby94
Edit:
Grazie piero che hai risposto prima che premessi invia annulando il mio sforzo xD scherzo
Ultima modifica effettuata da Roby94 10/04/14 18:14
aaa