调用超类&x27;在java中使用基类对象重写函数

调用超类&x27;在java中使用基类对象重写函数,java,inheritance,overriding,Java,Inheritance,Overriding,假设我有一个带有display()方法的超类Test,另一个名为Test1的类扩展了类Test,这个类还有一个名为display()的方法 现在我有了另一个名为DemoClass的类,其中有一个main方法。现在在main方法中,我创建了一个子类“Test1”的对象,并希望调用超类的重写方法,即类“Test”的display() 我不想对子类或超类做任何更改。仅通过更改main方法如何实现这一点?您不能。如果希望能够从DemoClass调用Test.display,则需要更改Test或Test1

假设我有一个带有
display()
方法的超类
Test
,另一个名为
Test1
的类扩展了类
Test
,这个类还有一个名为
display()
的方法

现在我有了另一个名为
DemoClass
的类,其中有一个
main
方法。现在在
main
方法中,我创建了一个子类“Test1”的对象,并希望调用超类的重写方法,即类“Test”的
display()


我不想对子类或超类做任何更改。仅通过更改
main
方法如何实现这一点?

您不能。如果希望能够从DemoClass调用Test.display,则需要更改Test或Test1

您可以在Test1中创建一个新方法来调用它,如下所示:

    public void displayTest() {super.display();}

或者重命名其中一种方法。

请提供您正在使用的代码。这样做完全令人困惑。我认为唯一的方法是使用反射。。这通常不是一个好主意。你能帮我思考一下把事情做完的方法吗?你太好了。这是我的前辈们问的问题,他说这是可能的,你只需要对main方法做一点修改,他明确地说你不允许对现有的超类或子类代码做任何修改。或者不要重写它,超方法无论如何都会被调用。你可以将Test1改为DemoClass中的Test吗?(例如,“newtest().display()”@user3056354-immibis是正确的.)。。你不能。。所调用的方法取决于对象的类型,这里您正在对Test1的实例调用display()。因此,将调用Test1的display()。调用Test的display()的唯一方法是使用super()。否则,您将不得不创建Test()对象,而不是Test1。