Se ho due classi, A e B,Java chiamando il metodo della sottoclasse quando si cerca di utilizzare genitore metodo di classe
public class A {
public int test() {
return 1;
}
}
public class B extends A{
public int test() {
return 2;
}
}
Se lo faccio: A a1 = new B()
, poi a1.test()
restituisce 2 invece di 1 come desiderato. Questa è solo una stranezza di Java, o c'è qualche ragione per questo comportamento?
Questo è chiamato 'dynamic binding', è necessario conoscere anche il' binding statico'. Diventa un po 'più complicato quando si tenta di sovrascrivere (ad esempio nascondere) i campi anziché i metodi. Troverete molte domande su questo su SO o su Google. –