我是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"。但实际上我看到的是"A"。我做错了什么?
编辑:是的,这两个类位于两个不同的文件中。它们为了简洁起见在此一起显示。
编辑:我不确定B如何被实例化,因为它是由使用类加载器的第三方程序完成的。
编辑:有关第三方程序的更多信息。它首先调用A.main(),我最初没有显示它(抱歉)。我假设我需要让 "new A().run();" 更加通用,以使用当前类的名称。这是否可能?