determinare la potenza:Ereditarietà Java e associazione tardiva, perché int id ha il valore della classe parent e non quello della classe figlio?
public class Test1{
public static void main(String args[]){
ChildClass c = new ChildClass();
c.print();
}
}
class ParentClass{
int id = 1;
void print(){
System.out.println(id);
}
}
class ChildClass extends ParentClass{
int id = 2;
}
So che la risposta è 1, e sto cercando di indovinare che è perché dal momento che la funzione di stampa non viene sovrascritto nel ChildClass
, ha la stessa definizione che ha in il ParentClass
. Perché l'ID non è quello fornito in classe figlio poiché Java utilizza l'associazione tardiva?
Questo ha senso, grazie! – drossy11
@ drossy11 prego. Date anche un'occhiata ad altre risposte (più teoriche ma degne di essere considerate): i campi gist being sono * hidden *, i metodi sono * sovrascritti *. – Mena
Domanda veloce, se c'era una funzione hello() definita nella parentClass sovrascritta in childClass(), e c'era una chiamata per la funzione hello() nel costruttore della classe parentClass() usava l'hello() classe definita in childClass() perché c'è un dispatch dinamico sui metodi, giusto? – drossy11