为什么子类中的super.getClass()返回子类名称

我在一个子类中,当我试图找到超类的名称时,我尝试了super.getClass(),但它只返回子类的名称。 为什么?

getClass().getSuperclass()应该这样做。

如果你从你的超类(或你的超类的超类等)覆盖一个方法, super.theMethod()将调用原始方法而不是你用它覆盖的方法。 如果你没有实际覆盖theMethodsuper.theMethod()将完全像theMethod()

在这种情况下,我假设你没有覆盖getClass() (实际上我知道你没有,因为它是最终的),所以super.getClass()行为与getClass()完全相同,即Object类的getClass方法是调用。

这是因为你正在创建派生类的对象而不是超类。你可以试试这个

 this.getClass().getSuperClass();