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

Abh*_*ary 10 java

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

Boz*_*zho 10

getClass().getSuperclass() 应该做.


sep*_*p2k 5

如果您重写超类(或超类的超类等)中的方法,super.theMethod()将调用原始方法而不是您重写的方法。如果您实际上没有覆盖theMethodsuper.theMethod()则行为将完全相同theMethod()

在这种情况下,我假设您没有重写getClass()(事实上我知道您没有重写,因为它是最终的),因此super.getClass()其行为与 完全相同getClass(),即无论哪种方式都调用getClass该类的方法。Object

  • @AbhishekChoudhary 是的。当您调用“getClass”时,您正在调用“Object”中定义的方法“getClass”。“Object”是您的类的超类(即使不是直接超类),因此您正在调用该方法的超类版本。事实上,超类的版本是该方法的唯一版本。 (4认同)