class A {int x = 5;}
class B extends A {int x = 10;}
class D {
public static void main(String[] args){
A b0 = new B();
System.out.print(b0.x);
}
}
Mi chiedo il motivo per cui questo codice stampa 5 invece di 10.statico Instance Ricerca variabile Java
Se io invece scrivo quanto segue, convertendo le variabili x ai metodi, funziona più come mi aspetto, e stampa 10, poiché in fase di compilazione ha semplicemente controllato se il tipo statico di b0, A, ha un metodo x, e quindi in fase di esecuzione, usa il tipo dinamico di b0, B, per eseguire x.
class A {int x() {return 5;}}
class B extends A {int x() {return 10;}}
class D {
public static void main(String[] args){
A b0 = new B();
System.out.print(b0.x());
}
}
mia teoria è che le variabili di istanza sono guardato fino staticamente a differenza di metodi, ma non sono sicuro sul perché sarebbe.
Grazie!