Я новичок в 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");
}
}
Когда я создаю экземпляр и вызываю B.run (), я ожидаю увидеть вывод "B". Однако вместо этого я вижу «А». Что я делаю не так?
Редактировать: Да, классы находятся в двух отдельных файлах. Они показаны вместе для краткости.
Редактировать: я не уверен, как создается экземпляр B, поскольку это делается сторонней программой, использующей загрузчик классов.
Редактировать: дополнительная информация о сторонней программе. Он начинается с вызова A.main (), который я изначально не показывал (извините). Я предполагаю, что мне нужно сделать "new A (). Run ();" более универсально использовать имя текущего класса. Это возможно?