Sì.Originariamente inviato da djdan8787
Ma in ogni caso è sempre così?
Il compilatore si basa solo sul tipo del reference (e non sul tipo dell'oggetto realmente istanziato) per stabilire quale variabile di istanza (o di classe) o quale metodo (tra quelli eventualmente in overload) usare.
È poi a runtime che può entrare in gioco la questione del override.
Sia che tu faccia:codice:class A { public void stampa () { System.out.println ("stampa in A"); } } class B extends A { public void stampa () { System.out.println ("stampa in B"); } }
A x = new B();
x.stampa ();
oppure:
B x = new B();
x.stampa ();
viene stampato in entrambi i casi "stampa in B". Questo perché entra in gioco l'override in B del metodo stampa().