日期:2014-05-17  浏览次数:20774 次

小问题,帮忙看看,谢谢!
请看下面的java代码:

public class Father {}
public class Son extends Father {
public void m() {
System.out.println(super.getClass());
}

public static void main(String[] args) {
Son s = new Son();
s.m();
}
}

请问为什么打印结果是class Son?
应该是class Father才对,为什么,谢谢!

------解决方案--------------------
由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在

m方法中调用getClass方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass()方法,所以,super.getClass方法返回的也应该是Son。