Sono nuovo di Java e ho letto alcuni tutorial sui metodi di sovrascrittura, ma un esempio che sto guardando non funziona come mi aspetto. Ad esempio, ho il codice:Sovrascrittura di un metodo Java
public class A{
public void show(){
System.out.println("A");
}
public void run(){
show();
}
public static void main(String[] arg) {
new A().run();
}
}
public class B extends A{
@Override
public void show(){
System.out.println("B");
}
}
Quando ho istanzia e si chiamo B.run(), mi sarei aspettato di vedere "B" in uscita. Tuttavia, vedo invece "A". Che cosa sto facendo di sbagliato?
Modifica: Sì, le classi si trovano in due file separati. Sono mostrati insieme per brevità.
Modifica: non sono sicuro di come viene istanziata B, poiché viene eseguita da un programma di terze parti che utilizza un classloader.
Modifica: Ulteriori informazioni sul programma di terze parti. Inizia chiamando A.main(), che inizialmente non ho mostrato (mi dispiace). Suppongo di dover creare "nuovo A(). Run();" più generico per usare il nome della classe corrente. È possibile?
Come stai istanziando e chiamando questo? –
@Prasoon Non è stato menzionato il file, solo le classi. Non è stato possibile dedurre i file effettivi in cui si trovavano. – KLE