Upcast e downcast delle classi in Java

package vale.io;

public class Prova {

public Prova() {
M m = new N();
//N n = new N();
//M m=n;
m.f1();
((N)m).f2(); //devo fare il casting altrimenti cerca in M se c’è f2()
}

public static void main(String[] args) {
new Prova();
}
}
class M {
void f1() {
System.out.println(“f1_di_M”);
}
}
class N extends M{
//se sovrascrivo la classe allora c’è dynamic binding
//altrimenti stampa “f1”
void f1() {
System.out.println(“f1_di_N”); }

void f2() {
System.out.println(“f2”);
}
}

Continua a leggere