Oppure

Loading
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
Il mio blog: piero.dev
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
11/04/14 15:45
Mattrix93
Grazie a tutti (anche a Roby per lo sforzo :k: ) :)
aaa