Я новичок в Java, и я прочитал несколько руководств по переопределяющим методам, но пример, на который я смотрю, не работает так, как я ожидаю. Например, у меня есть код:Переопределение метода 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(), который я изначально не показывал (извините). Я предполагаю, что мне нужно сделать «новый A(). Run();» более общий для использования имени текущего класса. Это возможно?
Как вы создаете и называете это? –
@Prasoon Не было упоминания файла, только классов. Мы не могли сделать вывод о фактических файлах, в которых они находились. – KLE